Удобных сочетаних клавиш всегда не хватает, поэтому предлагаю попробовать в фаре проверенную временем систему последовательностей из нескольких нажатий, знакомую многим по старым IDE от Borland (хотя большинство сочетаний пришли туда в свою очередь из редактора WordStar).
Для иллюстрации составил макросы, повторяющие действие некоторых команд:
^KB Mark block begin
^KK Mark block end
^KC Copy block
^KV Move block
^KT Mark single word
^KY Delete block
^KI Indent block
^KU Unindent block
^KH Hide/display block
^K-n Set place marker
^KN Turn column mode on/off
^KL Mark line
^KE lower [Change Case plugin]
^KF UPPER [Change Case plugin]
^KX Overwrite block with clipboard content
^KP Mark last block
^QS Go to Start of Line
^QD Go to end of line
^QE Go to top of window
^QX Go to bottom of window
^QR Go to start of file
^QC Go to end of file
^QP Last position
^QY Delete to end of line
^Q-DEL Delete to Start of Line
^QB Go to start of block
^QK Go to end of block
^QL ~ Restore line
^Q-n Find place marker
^QN Go to line n
^Q[ Pair matching right [Brackets plugin]
^Q] Pair matching left [Brackets plugin]
^Q{
^Q}
^QF Find
^QA Find & replace
^QT Pos current line to the top of the window
^QU Pos current line to the bottom of the window
^QP Last position
^OO Current editor options
^OP Persistent blocks on/off
^OI Autoindent on/off
^OT Tab mode on/off
^OS Show white space
^OC CharCodeBase
^OW Auto wrap toggle [Auto wrap plugin]
^OJ Justify Paragraph [Align block plugin]
(под "x" здесь понимается вторая клавиша последовательности, например ^KB надо понимать как CtrlK-B).
Часть команд дублирует команды фара, часть — добавляет хоткеи для управления некоторыми параметрами редактора, часть — использует функции стандартных плагинов.
Описывать каждую команду не буду, но отдельные функции выделю:
Работа с блоками: воспроизводится то самое поведение turbo-сред: отдельные команды для пометки начала/конца блока, и пр.
Даже если редактор настроен на непостоянные блоки, после применения указанных команд блок становится постоянным, но только до тех пор, пока не будет выделен другой (или сброшено выделение).
Это позволяет прозрачно совмещать оба типа выделения, без необходимости явно трогать настройки.
Если в общих настройках редактора постоянные блоки отключены, то в локальных (^OO) этот режим включить невозможно.
Точнее говоря, команда есть (^OP) и работает, но не как режим, а как свойство текущего блока.
Текущее состояние постоянных блоков индицируется на линейке клавиш, как предлагалось тут. Кроме того, выполнение ряда команд сопровождается выводом состояния в строке статуса (кратковременно).
Функции некоторых команд расширены по сравнению с фаровскими аналогами. Например:
^KC работает и с непостоянными блоками. При отсутствии блока выделяет и дублирует текущую строку.
^KY удаляет блок только если он на экране, в противном случае только позиционируется на него.
Не все функции этого пакета имели аналоги в турбо средах. Например.
^KN переключить тип блока (поточный/вертикальный)
^KP вернуть выделение предыдущему блоку (запрашивалось тут).
Так же можно переключаться между текущим и предыдущим выделением.
^QP возвращает курсор в место последней правки, подобно шорткату Eclipse CtrlQ (запрашивалось тут), или ShiftF5 в MS Word (запрашивалось тут, хотя не уверен что у MS работает так же).
Повторное нажатие возвращает курсор обратно.
Если последняя правка была произведена не в текущем редакторе, то открывает нужный файл (в панелях тоже работает).
Дополнительно:
Для непостоянных блоков кнопки Left/Right перемещают курсор между позициями начала и конца выделения (предлагалось тут).
Для постоянных блоков: в этом режиме есть две опции, видимо вообще не предназначенные для использование (их включение гарантирует неожиданности).
С помощью макросов их поведение модифицировано так: [x] Del removes blocks — Del удаляет блок только если курсор находится в пределах блока. Editor.BSLikeDel — BS удаляет блок только если курсор находится у его правой границы.
Также в комплекте макросы для Colorer, аналогичные штатным, но занимающие лишь одну клавишу
C Colorer menu
L List types
[ Match pair
] Select block
P Select pair
; Outliner list
' Errors list
K Select region
A Region info
O Find Function
─────────────────────
U Update highlighting
R Reload schema library
ShiftC Configure
Для того, чтобы макросы активировались последовательностью нажатий: требуется также установить скрипт macroEx (необходимо особое внимание обратить как правильно нажимать последовательность, см. подробности там).
Если не нравятся последовательности, то несложно определить собственные макросы на удобные сочетания.
Re: turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 09:26
by John Doe
Забыл упомянуть, что помнить все сочетания нет нужды, при удержании модификатора выводится подсказка.
Re: turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 10:15
by Wave
Спасибо. Пока писал ответ и опробовал-исследова макросы, разобрался, а то никогда не мог понять, что означают эти Ctrl-K-x.
Соответственно, никогда не пользовался и соответственно не мог запомнить мнемонику. Особенно за подсказку спасибо.
Re: turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 10:21
by John Doe
Wave wrote:[...]а то никогда не мог понять, что означают эти Ctrl-K-x.
Подскажите как исправить текст, чтобы было понятнее пользователю, не знакомому с последовательностями кнопкосочетаний.
Re: turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 14:53
by Wave
Думаю, вписать ремарку, что Ctrl-K-x — это последовательность нажатий кнопок, которая выполняется так: зажимается Ctrl, не отпуская нажимается K, а потом не отпуская Ctrl нажимается третья кнопка, которая играет роль подменю, т.е, всегда разная, см. подсказку.
Чего не понимал я, что x — это не «кнопка x» (буква x, ещё и разный регистр с толку сбивал), а «третья кнопка». Т.е. что x — это переменная в данном случае. Это как бы само-собой разумелось и в явном виде нигде не писалось (мне не встречалось).
Re: turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 14:55
by John Doe
Спасибо, учту.
turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 16:20
by HaRT
Wave wrote:Думаю, вписать ремарку, что Ctrl-K-x — это последовательность нажатий кнопок, которая выполняется так: зажимается Ctrl, не отпуская нажимается K, а потом не отпуская Ctrl нажимается третья кнопка
Отпускается ли при этом ‘K’?
Кстати, Microsoft Visual Studio 2008–2012–… обозначает это так: Ctrl+K, Ctrl+X (а если бы Ctrl отпускался, то было бы Ctrl+K, X).
Какие современные продукты используют обозначение с минусами и без запятой?
Re: turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 16:23
by John Doe
K отпускается.
Записывать как Ctrl+K, Ctrl+X неверно, т.к. в нашем случае Ctrl отпускать нельзя.
turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 17:04
by HaRT
John Doe wrote:Записывать как Ctrl+K, Ctrl+X неверно, т.к. в нашем случае Ctrl отпускать нельзя.
Может тогда лучше, чтобы и совместить обе традиции (Фара и MSVS), и подчеркнуть неразрывность комбинации, записывать как CtrlK-CtrlX?
Re: turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 17:18
by AleXH
CtrlK или CtrlX?
Может Ctrl-K-_?
Re: turbo — работа с выделением в редакторе
Posted: Thu 07 Aug, 2014 23:00
by John Doe
В той версии модуля MacroEx что прилагается к сабжевому набору макросов есть небольшая ошибка, рекомендуется обновить (исправленная версия в теме MacroEx).
John Doe wrote:Записывать как Ctrl+K, Ctrl+X неверно, т.к. в нашем случае Ctrl отпускать нельзя.
Поясню что ограничение это намеренное, таким образом начальная клавиша может продолжать использоваться по исходному назначению.
Желающие могут попробовать убрать это требование, закомментировав первую строку модуля, или изменить break_sequence_on_mod_release = false
Меня не очень волнует как именно будут записываться эти сочетания, тем более мы все вроде бы друг друга поняли.
Шапку позже исправлю, чтобы описание было исчерпывающим.
И данной теме хотелось бы прежде всего видеть отзывы по функционированию скриптов (а я знаю что пока не всё идеально).
Re: turbo — работа с выделением в редакторе
Posted: Wed 20 Aug, 2014 22:01
by John Doe
Обновление:
Исправлены найденные ошибки
Весь набор адаптирован для новой версии MacroEx (MacroEx больше не модуль)
Re: turbo — работа с выделением в редакторе
Posted: Thu 21 Aug, 2014 11:07
by AleXH
Предлагаю в названия макросов добавить префикс Editor.Turbo (например Editor.Turbo.Ctrl-Q-quick.lua, чтобы была понятна область их действия, их общность и принадлежность.