turbo — работа с выделением в редакторе

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

turbo — работа с выделением в редакторе

Post by John Doe »

Удобных сочетаних клавиш всегда не хватает, поэтому предлагаю попробовать в фаре проверенную временем систему последовательностей из нескольких нажатий, знакомую многим по старым IDE от Borland (хотя большинство сочетаний пришли туда в свою очередь из редактора WordStar).

Предлагаются макросы, повторяющие действие некоторых команд: (под "x" здесь понимается вторая клавиша последовательности, например ^KB надо понимать как CtrlK-B).

Часть команд дублирует команды Far, часть — добавляет хоткеи для управления некоторыми параметрами редактора, часть — использует функции стандартных плагинов.

Хотя действия большинства команд очевидны, систему следует описать в целом:
  • Основная функциональность — работа с блоками: воспроизводится то самое поведение turbo-сред: отдельные команды для пометки начала/конца блока, и пр.
  • Применения команд создаёт "постоянные" блоки (режим по умолчанию отключенный в Far), но изменение это временно, до тех пор, пока не будет выделен другой блок (или сброшено выделение).
    Это позволяет прозрачно совмещать оба типа выделения, без необходимости явно трогать настройки.
    • Текущее состояние режима постоянных блоков индицируется на линейке клавиш (F3), как предлагалось тут. Кроме того, выполнение ряда команд сопровождается выводом состояния в строке статуса (кратковременно).
    • "Классическое" поведение постоянных блоков тоже возможно, если режим включен в глобальных настройках редактора.
      Активировать его в локальных (^OO) - недостаточно.
    • Если же глобально режим отключен (что в Far является умолчательным), то команда ^OP (или F3) переключает свойство текущего блока, а не режим.
Не все функции этого пакета имели аналоги в турбо средах. Например:
  • ^KX Overwrite block with clipboard content
  • ^KN переключить тип блока (поточный/вертикальный)
  • ^KP вернуть выделение предыдущему блоку (запрашивалось тут).
    [todo] сформулировать отличие от ^KH
    Так же можно переключаться между текущим и предыдущим выделением.
    Альтернативный шорткат — Ctrl+U, как бы инвертирует штатное действие (сброс выделения).
  • CtrlU:Hold - выделяет последние изменённые строки.
    Главным образом для того чтобы восстановить выделение после вставки блока, или после undo операции с блоком.
    В связи со странностями EE_CHANGE вынуждено применяется дополнительная эвристика, покрывающая не все случаи потенциального использования.
  • ^QV возвращает курсор в место последней правки, подобно шорткату Eclipse Ctrl+Q (запрашивалось тут), или ShiftF5 в MS Word (запрашивалось тут, работает не идентично MS).
    Сохраняются несколько последних позиций, повторные нажатия позволяют переключаться между ними (и возвращаться в исходную позицию).
    ^QP — то же самое, но если последняя правка была произведена не в текущем редакторе, то открывает сесто последней правки в нужном файле (в панелях тоже работает).
  • Для непостоянных блоков кнопки Left/Right перемещают курсор между позициями начала и конца выделения (предлагалось тут).
Дополнительно:

Для того, чтобы макросы активировались последовательностью нажатий: требуется также установить скрипт macroEx.

Если не нравятся последовательности, то несложно определить собственные макросы на удобные сочетания.

Скачать: https://chiselapp.com/user/johnd0e/repo ... /turbo.zip

Старая версия:
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Re: turbo — работа с выделением в редакторе

Post by John Doe »

Забыл упомянуть, что помнить все сочетания нет нужды, при удержании модификатора выводится подсказка.
User avatar
Wave
Posts: 1900
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 16 times
Been thanked: 29 times

Re: turbo — работа с выделением в редакторе

Post by Wave »

Спасибо. Пока писал ответ и опробовал-исследова макросы, разобрался, а то никогда не мог понять, что означают эти Ctrl-K-x.
Соответственно, никогда не пользовался и соответственно не мог запомнить мнемонику. Особенно за подсказку спасибо.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Re: turbo — работа с выделением в редакторе

Post by John Doe »

Wave wrote:[...]а то никогда не мог понять, что означают эти Ctrl-K-x.
Подскажите как исправить текст, чтобы было понятнее пользователю, не знакомому с последовательностями кнопкосочетаний.
User avatar
Wave
Posts: 1900
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 16 times
Been thanked: 29 times

Re: turbo — работа с выделением в редакторе

Post by Wave »

Думаю, вписать ремарку, что Ctrl-K-x — это последовательность нажатий кнопок, которая выполняется так: зажимается Ctrl, не отпуская нажимается K, а потом не отпуская Ctrl нажимается третья кнопка, которая играет роль подменю, т.е, всегда разная, см. подсказку.
Чего не понимал я, что x — это не «кнопка x» (буква x, ещё и разный регистр с толку сбивал), а «третья кнопка». Т.е. что x — это переменная в данном случае. Это как бы само-собой разумелось и в явном виде нигде не писалось (мне не встречалось).
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Re: turbo — работа с выделением в редакторе

Post by John Doe »

Спасибо, учту.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

turbo — работа с выделением в редакторе

Post by HaRT »

Wave wrote:Думаю, вписать ремарку, что Ctrl-K-x — это последовательность нажатий кнопок, которая выполняется так: зажимается Ctrl, не отпуская нажимается K, а потом не отпуская Ctrl нажимается третья кнопка
Отпускается ли при этом ‘K’?
Кстати, Microsoft Visual Studio 2008–2012–… обозначает это так: Ctrl+K, Ctrl+X (а если бы Ctrl отпускался, то было бы Ctrl+K, X).
Какие современные продукты используют обозначение с минусами и без запятой?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Re: turbo — работа с выделением в редакторе

Post by John Doe »

K отпускается.
Записывать как Ctrl+K, Ctrl+X неверно, т.к. в нашем случае Ctrl отпускать нельзя.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

turbo — работа с выделением в редакторе

Post by HaRT »

John Doe wrote:Записывать как Ctrl+K, Ctrl+X неверно, т.к. в нашем случае Ctrl отпускать нельзя.
Может тогда лучше, чтобы и совместить обе традиции (Фара и MSVS), и подчеркнуть неразрывность комбинации, записывать как CtrlK-CtrlX?
Фар есть инструмент, а не нянька. © 2009 DrKnS
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: turbo — работа с выделением в редакторе

Post by AleXH »

CtrlK или CtrlX? :)

Может Ctrl-K-_?
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Re: turbo — работа с выделением в редакторе

Post by John Doe »

  • В той версии модуля MacroEx что прилагается к сабжевому набору макросов есть небольшая ошибка, рекомендуется обновить (исправленная версия в теме MacroEx).
  • John Doe wrote:Записывать как Ctrl+K, Ctrl+X неверно, т.к. в нашем случае Ctrl отпускать нельзя.
    Поясню что ограничение это намеренное, таким образом начальная клавиша может продолжать использоваться по исходному назначению.
    Желающие могут попробовать убрать это требование, закомментировав первую строку модуля, или изменить break_sequence_on_mod_release = false
  • Меня не очень волнует как именно будут записываться эти сочетания, тем более мы все вроде бы друг друга поняли.
    Шапку позже исправлю, чтобы описание было исчерпывающим.
    И данной теме хотелось бы прежде всего видеть отзывы по функционированию скриптов (а я знаю что пока не всё идеально).
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Re: turbo — работа с выделением в редакторе

Post by John Doe »

Обновление:
  • Исправлены найденные ошибки
  • Весь набор адаптирован для новой версии MacroEx (MacroEx больше не модуль)
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: turbo — работа с выделением в редакторе

Post by AleXH »

Предлагаю в названия макросов добавить префикс Editor.Turbo (например Editor.Turbo.Ctrl-Q-quick.lua, чтобы была понятна область их действия, их общность и принадлежность.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Re: turbo — работа с выделением в редакторе

Post by John Doe »

А вы разве не раскладываете скрипты по папкам?
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: turbo — работа с выделением в редакторе

Post by AleXH »

Нет, я их сортирую в одной :)
Post Reply

Return to “Обсуждение макросов”