В предыдущей заметке мы говорили о плагинах,
без которых работа с Far’ом становится гораздо менее удобной. Но
помимо плагинов есть одна вещь, позволяющая изменить поведение нашего
любимого файл-менеджера — макросы.
Для тех, кому уже исполнилось 6 лет, но еще не исполнилось 7,
объясняю на пальцах. Есть у нас последовательность клавиш, которую мы
часто используем. Длинная последовательность. Очень длинная. А мы
берем и назначаем эту длинную последовательность одной клавише. Вот
это и есть макрос.
Ниже я обязательно перечислю те макросы, которые использую сам,
но для начала поговорим о том, как они вообще создаются и
редактируются.
Создание и редактирование макросов
Стандартный вариант, который предлагается Far’ом, состоит в
следующем — мы нажимаем «Ctrl-.» (при этом в
левом верхнем углу появится буква R — запись, record), затем
последовательность клавиш, затем опять «Ctrl-.»,
после чего Far предложит назначить клавишу введенной
последовательности.
Описанный метод вполне пригоден для задания коротких макросов, но
длинные задавать таким способом крайне неудобно. Фактически это
делается вслепую. Более того, отредактировать макропоследовательность
и вовсе не удастся — придется повторить всю операцию с самого начала
и быть при этом более внимательным.
Однако есть альтернативный вариант, который я упомянул в
записке, посвященной плагинам.
Альтернативный вариант носит название
Macro View.
При вызове Macro View вы увидите все определенные на данный момент
макрокоманды, например вот такие:
Built-in viewer: "AltF6" │ Калькулятор
Built-in viewer: "AltF7" │ Find All
File panels: "AltF6" │ Калькулятор
File panels: "Ctrl," │ Вызов проводника в текущем каталоге
Text editor: "AltF6" │ Калькулятор
Text editor: "AltD" │ Вставить дату
Text editor: "AltT" │ Вставить время
Кстати, обратите внимание, что в данном случае клавиша
«Alt-F6″ задана целых три раза — для
редактирования (Text editor), для просмотра (Built-in viewer) и для
файловых панелей (File panels). Помимо этого еще бывают следующие
состояния: диалоговые окна (Dialogue windows), меню дисков (Disks
menu), главное меню (Main menu), окно быстрого поиска (Quick search
files) и загадочные «Other areas». Это говорит о том, что одной и той
же клавише в различных ситуациях могут соответствовать разные
макропоследовательности.
Любой макрос можно удалить клавишей «Del»,
добавить клавишей «Ins» или отредактировать -
«Enter». При этом, в отличии от стандартного
варианта, вы визуально можете наблюдать редактируемую макрокоманду:
F11 l Enter
Макросы записываются в реестр, как, впрочем, и все, что касается
конфигурации Far’а. Поэтому их можно экспортировать в отдельный
reg-файл (клавиша «F2″ в Macro View). Получается
нечто похожее на:
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Viewer\AltF6]
"Sequence"="F11 l Enter"
"Description"="Калькулятор"
"DisableOutput"=dword:00000001
Обратная процедура импортирования из reg-файла производится
программой regedit:
regedit AltF6.reg
Примеры макрокоманд, сохраненных в виде reg-файлов, вы можете найти в
каталоге C:\Program Files\Far\Addons\Macros. Там лежит примерно 25
примеров макросов.
Для чего они нужны?
Думаю, что пора ответить на главный вопрос, — в каких ситуациях
могут пригодиться макросы? В общих чертах понятно, но, думаю, стоит
поподробней. Давайте загибать пальцы.
Для сокращения ввода
Длинная последовательность нажатий заменяется одним. Выходит
короче, а, следовательно, меньше вероятность сделать ошибку. Лично я
использую следующие макросы:
«Ctrl-,» — вставляет в текущее место
редактора заготовку для тэга — две угловые скобки, после чего
помещает курсор между ними.
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\Ctrl,]
"Sequence"="< > Left"
"DisableOutput"=dword:00000001
"Description"="Вставить тэг"
«Ctrl-/» — все то же самое для
закрывающего тэга.
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\Ctrl/]
"Sequence"="< / > Left"
"DisableOutput"=dword:00000001
"Description"="Вставить закрывающий тэг"
Для быстрого вызова плагинов
Дело в том, что большинство плагинов вызываются через меню,
вызываемое нажатием «F11″, после чего еще, как
минимум, следует нажатие «горячей клавиши». Хочу, заметить, что со
многими плагинами дело этим не ограничивается — у них есть еще свои
подменю. В общем, пока доберешься, до нужного места, рабочий день
заканчивается. А если все это, начиная с «F11″
повесить на какую-то удобную клавишу (только не
«Reset»!), то есть шанс добраться до плагина уже
к обеду.
Я использую следующие макросы (будьте внимательны, у вас «горячие
клавиши» для плагинов почти наверняка отличаются, не забудьте
подправить!):
«Alt-F6″ — калькулятор.
Как видите, калькулятор можно позвать в момент редактирования,
просмотра, а также просто находясь в обычном состоянии, наблюдая
синие панели:
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Viewer\AltF6]
"Sequence"="F11 l Enter"
"Description"="Калькулятор"
"DisableOutput"=dword:00000001
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\AltF6]
"Sequence"="F11 l Enter "
"Description"="Калькулятор"
"DisableOutput"=dword:00000001
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltF6]
"Sequence"="F11 l Enter"
"DisableOutput"=dword:00000001
"Description"="Калькулятор"
Alt-D» — вставить дату в редакторе
(используется плагин Date-n-Time).
Лично мне дату удобней всего наблюдать в виде ДД.ММ.ГГ, а поскольку
каждый раз задавать формат лениво, то вот вам макрос:
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\AltD]
@=""
"Sequence"="F11 D T 0 % d . % m . % y Down Down Down Space Enter"
"Description"="Вставить дату"
"DisableOutput"=dword:00000001
«Alt-T» — тот же плагин, на этот раз
вставляется время в формате ЧЧ:ММ:СС
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\AltT]
@=""
"Sequence"="F11 D T 0 % H : % M : % S Down Down Down Space Enter"
"DisableOutput"=dword:00000001
"Description"="Вставить время"
«Alt-H» — вызов плагина
Branch.
Навеяно сходной клавишей в DN. При нажатии показывает файлы из
всех подкаталогов текущего каталога. Макрос сам по себе очень
простой, экономия мизерная, но как бы то ни было, руки уже привыкли, и
переучить их оказалось сложнее, чем написать макрос:
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltH]
"Sequence"="F11 h"
"Description"="Ветка каталогов"
«Alt-F9″ — у меня Far запускается в
оконном режиме и переключение 25/50 строк становится излишним. Даже
более того — оно мешает. Таким образом, убивая сразу двух зайцев,
вешаю на «Alt-F9″ вызов конфигурации плагинов:
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltF9]
"Sequence"="F9 o u"
"DisableOutput"=dword:00000001
"Description"=""
Для замены клавиш, используемых по умолчанию
Далеко не всем клавиши, используемые в Far’е, кажутся удобными и
интуитивно понятными. И именно макросы могут помочь. Тут мы сильно
выигрываем, не тратя время на то, чтобы вспомнить, какую же именно
клавишу надо нажать.
Что пользую я:
Парочка макросов, взятых из стандартной поставки (Del.reg и
Esc.reg) — ссылок не даю, учитесь искать сами и, как говорится, RTFM.
Клавиши «Alt-0″, «Alt-1″,
«…», «Alt-9″ используются
вместо «RCtrl-0″, «RCtrl-1″,
«…», «RCtrl-9″. Последние
используются для быстрого перехода по каталогам. Но, как мне кажется,
это не самый удобный вариант, поскольку нужны обе руки, правая для
«Ctrl», а левая для цифр. Вариант, который
«намакросил» я, более эргономичный:
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Alt0]
"Sequence"="RCtrl0"
"Description"="Каталог 0"
"DisableOutput"=dword:00000001
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Alt1]
"Sequence"="RCtrl1"
"Description"="Каталог 1"
"DisableOutput"=dword:00000001
...
Для создания новых функций
Вам чего-то не хватает? Подумайте, а не спасут ли макросы? Зачастую
ими можно удовлетворить почти все потребности.
Например:
«Alt-Q» — нечто вроде блокнота, позволяющего
делать записи. Для каждой записи ставится дата и время создания.
Выглядит это примерно так:
03.06.01 02:54:00
выбросить вконец испорченный и
купить новый диск
03.06.01 02:53:44
восстановить данные после форматирования
03.06.01 02:53:23
отформатировать диск
А сам макрос вот (требуется плагин Date-n-Time):
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltQ]
"Sequence"="ShiftF4 c : BackSlash n o t e b o o k . t m p
Enter CtrlHome F11 D T 0 % d . % m . % y Down
Down Down Space Enter Space
F11 D T 0 % H : % M : % S
Down Down Down Space Enter Enter Enter Up"
"DisableOutput"=dword:00000001
"Description"="Блокнот"
«Ctrl-Enter» — в редакторе используется для
дублирования текущей строки. Уже не помню, с какого редактора это
повелось, но эту функцию я просто обожаю и использую где можно и где
нельзя:
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\CtrlEnter]
"Sequence"="Home ShiftDown CtrlIns ShiftIns ShiftIns Up Up"
"DisableOutput"=dword:00000001
"Description"="Удвоить строку"
«Ctrl-,» — вам никогда не приходилось
вызывать explorer из Far’а? У меня иногда возникает такая
необходимость. Причем чаще всего нужно, чтобы explorer сразу попал в
текущий каталог. Вот этим и занимается следующий макрос (заметьте,
что опять используется «Ctrl-,», но теперь уже в
панелях):
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Ctrl,]
"Sequence"="CtrlG e x p l o r e r Space . Enter"
"DisableOutput"=dword:00000001
"Description"="Вызов проводника в текущем каталоге"
Рутине — нет!
Пожалуй, пора и закругляться. Напоследок хочу еще отметить одно
применение для макросов. Скажем, имеется файл вида:
слово 1
слово 2
слово 3
слово 4
слово 5
слово 6
...
А надо получить файл:
слово 1 слово 3
слово 4 слово 6
...
Как видим, некоторые слова удаляются, некоторые объединяются в
одну строку. Разумеется, если первый файл состоит из 100000 строк, то
без программы не обойтись. Если же в нем 100 строк, то быстрее
окажется создать макрос!
Макрос временно будет «повешен» на любую свободную клавишу,
например, на «Ctrl-R»:
REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\CtrlR]
"Sequence"="End Enter CtrlY CtrlY BS Space Home Down"
"DisableOutput"=dword:00000001
Теперь, после создания макроса, установите курсор на первую
строку и нажмите «Ctrl-R»:
слово1 слово3
слово4
слово5
слово6
слово7
...
Теперь еще разок «Ctrl-R»:
слово1 слово3
слово4 слово6
слово7
...
То, что надо! А теперь финал — нажмите
«Ctrl-R» и не отпускайте. Текст в редакторе
начнет форматироваться так, как и было заказано.
Кстати, макрос был написан достаточно аккуратно, и если вы на самой
последней строке лишний раз нажмете «Ctrl-R», то
ничего не случится. Эффект «последней строки» обязательно надо
учитывать при написании такого рода макрокоманд.
Не забудьте удалить макрос после использования, чтобы не
удивляться на следующий день, неожиданному форматированию исходников
вашей программы при случайном нажатии «Ctrl-R».
Заключение
Макросы, как и плагины, существенно расширяют возможности Far’а. Если
вы хотите работать комфортно, то они вам обязательно пригодятся. В
моей коллекции есть еще десятка два макросов, однако они уже
настолько специфичны, что приводить их я не рискнул. Те же макросы,
которые были упомянуты в данной записке, вы можете скачать одним
zip-файлом. Рад был помочь.