FAR
Файловый менеджер FAR – один из самых удобных. Он существенно упрощает навигацию по диску и выполнение повседневных операций. Для многих хакеров он стал настоящим IDE (интегрированной средой разработки), и ничего другом для счастья им уже и не надо. Разве что макросов. Вплоть до версии 1.70 бета 5, выпущенной 10 апреля 2003 года, FAR поддерживал довольно примитивный механизм записи макрокоманд, позволяющий выполнять однотипные действия одним нажатием и переопределять стандартные сочетания клавиш, используемых FAR'ом.
Чтобы начать запись достаточно нажать <Ctrl>+<.>. В верхнем левом углу тут же появляется красная буква "R", то есть Record (см. рис 12). Теперь все действия, совершаемые над FAR'ом, запоминаются в памяти. Повторное нажатие <Ctrl>+<.> останавливает запись и запрашивает горячую клавишу, которой будет вызывается макрос и сохраняет его в реестре.
Рисунок 12 буква "R", горящая в левом верхнем углу сигнализирует о записи макроса
Казалось бы, что можно сделать такого крутого с помощью макросов? А вот что! Допустим, установили мы плагин "colorer" и начали читать новеллу "Press Enter". Только ни хрена она не читается, потому что по умолчанию colorer не подсвечивает диалоги, если натыкается на перенос строки. Как-то неаккуратно получается.
Рисунок 13 по умолчанию, текст, заключенный в кавычки, не подсвечивается, если в нем встречается перенос строки
Посмотрим, что тут можно сделать. Нажимаем <F11> для вызова меню плагиов, находим там colorer, в нем выбираем "list types" и пытаемся подобрать наилучший тип синтаксической подсветки, которой оказывается "x. scripts: Apache httpd.conf" (см. рис.12).
Рисунок 14 режим "x. scripts: Apache httpd.conf" задает правильный тип подсветки
И все бы было хорошо, но каждый раз лазить в меню colorer'а слишком напряжно. А макросы на что? Повесим "подсветку" на любую свободную функциональную клавишу. Например, на <F9>. Только тут есть одна тонкость. При входе в list types, курсор находится на последнем выбранном типе, а он каждый раз разный. Как объяснить это макросу? Очень просто! Жмем клавишу <Home>, переходя в начало списка типов, откуда уже спускаемся к строке "x. scripts: Apache httpd.conf"!
А вот другой хитрый пример. Допустим, захотелось нам переформатировать документ. В штатную поставку FAR'а входит плагин Align Block, позволяющий форматировать абзацы, но… после форматирования курсор оказывается там же где и стоял, вынуждая нас вручную перемещаться к следующему форматируемому абзацу. Сплошной напряг! Приходится действовать через жопу: перемещаем курсор вниз, вводим уникальную последователь, заведомо не встречающуюся в документе (например, "fuckthemall"), возвращаем курсор наверх, форматируем абзац, давим <F7> (поиск) и вводим "fuckthemall". Все! Теперь FAR гарантированно перейдет на его начало! Нажимаем <DEL> 11 раз, стирая "fuckthemall" на хрен. Смотрите! Курсор стоит на первом символе следующего абзаца, то есть для переформатирования всего документа достаточно просто нажать горячую клавишу макроса и не отпускать ее!
Начиная с версии 1.70 alpha 6, макро-движок переработан и усилен. Появилась поддержка условных операндов, операторов цикла и функций. Теперь можно не просто записывать последовательности клавиш, но и, например, считывать текущую элемент в меню. Например, мы можем создать макрос, автоматически снимающий галочку "Copy access rights" при копировании на дискету (если она была взведена) и автоматически восстанавливающий ее содержимое при завершении. Старый макро-движок на это неспособен в приницпе.
Саму альфу можно стянуть с раздела обновлений (http://farmanager.com/files/Far170a6b2060.rar). В download'ах ее нет. Документация на макроязык еще не готова, пока только обкатывается черновой вариант: http://www.farmanager.com/files/macro.chm.zip, которую народ во всю обсуждает на форуме, обмениваясь макросами и идеями: http://forum.farmanager.com/viewforum.php?f=15&sid=ac08155b15647e7be5b1a8e16dbd03a5.
Например, следующий макрос автоматически создает папку с именем текущей даты. Это намного удобнее, чем каждый раз писать "new", "new2", "new.new", мучительно соображения какая из них самая новая, а какую уже можно и стереть:
REGEDIT4
;создание папки с именем = текущей дате
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\CtrlShiftF7]
"Sequence"="%folder=date(\"%d.%m0.%Y\"); $If (!fexist(%folder)) F7 CtrlY $Text %folder Enter $End"
"DisableOutput"=dword:00000001
"NoPluginPanels"=dword:00000001
Листинг 2 пример макроса для нового макро-движка