Emacs для начинающих

Создание макрокоманд


Разумеется, макрокоманды на встроенном языке NEdit можно создавать обычным образом, т. е. путем написания их кода "руками", благо особенности языка вполне внятно документированы в системе справки. Однако есть и другой способ, который для начала может оказаться более простым, - это протоколирование действий. Для этого требуется (рис. 1):

  1. включить режим протоколирования (через меню Macro - Learn Keystrokes или комбинацию клавиш Alt+K);
  2. произвести с клавиатуры (но не с помощью мыши!) все необходимые действия в той последовательности, в какой мы хотим их сохранить;
  3. завершить режим протоколирования (меню Macro - Finish Learn или повторным нажатием клавиш Alt+K);
  4. в случае ошибки при наборе команд - прервать протоколирование (меню Macro - Cansel Learn) и, включив его еще раз, повторить требуемые действия уже без ошибок.

Рис. 1. Протоколирование макрокоманд в редакторе NEdit.

Запротоколированная последовательность действий будет функционировать в течение данного сеанса работы с Nedit; первый раз ее можно вызвать через меню Macro - Reply Keystrokes, а в дальнейшем через Macro - Repeat. Однако при следующем запуске Nedit она будет утрачена.

Чтобы этого не случилось, следует сохранить созданную последовательность команд в виде пунктов меню Macro. Для этого, успешно завершив протоколирование данного макроса, отправляемся в меню Preferences, выбираем там пункт Default Settings, а в нем - опцию Customize Menu. Выбрав эту опцию, обнаружим пункт Macro Menu, вызывающий панель Macro Commands (рис. 2).

Рис. 2. Панель Macro Commands.

В списке доступных команд (в левой части панели) фиксируем курсор на пункте New. В поле Menu Entry задаем название команды и, при необходимости, название более высокого уровня для группы сходных команд, например, таким образом:

Group commands>Command1

(без пробелов перед знаком > и после него). Здесь же можно приписать команду к какому-либо из доступных языковых режимов. Например,

Group commands>Command1@SGML/HTML

будет указывать, что данная команда активизируется только при выборе языкового режима SGML/HTML.

Затем заполняем поле Accelerator. Здесь за командой можно закрепить какую-либо клавишу (из числа, например, функциональных, или Windows-клавиш) или их комбинацию: например, сочетание клавиш Alt или Ctrl (возможно, еще в сочетании с Shift) с какой-либо буквой, желательно имеющей мнемонический смысл. Для этого нужно просто зафиксировать курсор в поле Accelerator и нажать требуемую клавишу (например, F12) или их комбинацию (допустим, Ctrl+литера). Следует только внимательно следить, чтобы эта комбинация не использовалась для вызова штатных функций NEdit: не исключено, что при этом она не будет вызывать ни старого, ни нового закрепленного действия.

Вслед за этим можно заполнить поле Mnemonic, введя в него какую-либо букву из имени нашей команды (так, как оно указано в поле Menu Entry). При вызове меню буква эта будет подчеркнута и теоретически может использоваться для быстрого вызова команды (в сочетании с клавишей Alt). Однако на деле это работает далеко не всегда. Вернее, почти всегда не работает, поскольку большинство букв латинского алфавита уже задействованы для штатных команд NEdit.

Наконец, последнее из предварительных действий - включение, если требуется, переключателя Requires Selection. Он предназначен для команд, которые осуществимы только с предварительно выделенными фрагментами (это, например, копирование, вырезание и т.д.).

А вот теперь нажимаем экранную клавишу Paste Learn/Replay Macro (в правой части панели). И текст макроса волшебным образом появляется в поле Macro Command to Execute, где его можно любым образом отредактировать, дополнить, сократить и т.д. После чего нажимаем клавишу OK, выходя из режима редактирования Macro Menu, - и можем испробовать новую функцию на практике. Если все работает нормально - сохраняем текущую ситуацию через меню Preferences - Save Defaults. Изменения при этом, как уже говорилось, фиксируются в секции

nedit.macroCommands:


файла . nedit из пользовательского каталога. Там же их можно отредактировать вручную.

Таким образом можно насытить меню редактора NEdit командами для выполнения часто требующихся действий, отсутствующих в штатном комплекте (например, как будет показано ниже, для ввода тегов HTML). Однако в некоторых случаях этого может оказаться недостаточно. Иногда возникает потребность в систематическом исполнении каких-либо внешних программ, например, команд оболочки. Конечно, в этом случае можно задействовать стандартное окно терминала либо обратиться к строке мини-терминала, вызываемой через меню Shell - Execute Command, или к клавишной комбинации (Alt+X). Можно еще прибегнуть к непосредственному вводу команд в поле редактирования NEdit с последующим их запуском (через меню Shell - Execute Command Line). Однако все это не обеспечит достаточно комфортной работы.

К тому же подчас необходимо, чтобы команда оболочки выполнялась по отношению к редактируемому в данный момент в NEdit документу (пример - команда ispell для проверки орфографии). И тут нам на помощь приходит еще одна возможность повышения функциональности Nedit - встраивание команд оболочки.


Содержание раздела