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

Настройка переменных редактора Emacs.


Другая частая причина редактирования файла .emacs заключается в изменении значений переменных. Процедуры Emacs используют в процессе работы переменные. Поэтому, изменяя значения встроенных переменных, можно влиять на поведение Emacs.

Некоторые переменные содержат числовые значения. Например, переменная next-screen-context-lines содержит количество строк данного экрана, остающихся при нажатии клавиш Page Up или Page Down. Если значение данной переменной - 2, то при нажатии одной из этих клавиш на экране останутся две строки от предыдущего экрана. Чтобы проверить значение данной переменной, введите C-h v, а затем имя переменной.

Значение переменных можно менять, если нажать M-x, а затем в командной строке ввести set-variable. Нажмите Enter, и Emacs запросит имя устанавливаемой переменной. После ввода имени Emacs запросит новое значение переменной.

Это - достаточно многоходовая комбинация, особенно если учесть имя переменной next-screen-context-lines. Если при каждом входе в Emacs, нужно устанавливать значение данной переменной равное 1, воспользуйтесь функцией Emacs LISP setq, чтобы автоматизировать данный процесс. Добавьте следующую строку в файл .emacs:

(setq next-screen-context-lines 1)

Не все переменные поддерживают числовые значения. Некоторые, такие как load-path, являются символьными переменными. load-path - список подкаталогов, куда обращается Emacs, когда необходимо загрузить файл, содержащий LISP-программу. Как будет показано в главе "Редактирование Документов SGML в редакторе Emacs и PSGML", при работе с PSGML нужно будет изменить значение переменной load-path.

Многие переменные Emacs являются Булевыми. Булева переменная (названная по имени английского математика Джорджа Була, жившего в 19-м веке) - подобна выключателю, который может иметь только два положения: вкл. или выкл. Emacs использует большое количество Булевых переменных, что дает возможность гибкой настройки его работы. Например, можно задать, чтобы при пошаговом поиске (C-s или C-r) Emacs осуществлял поиск либо с учетом, либо без учета регистра.


Управлять чувствительностью к регистру можно меняя значение переменной case-fold-search. Чтобы заставить Emacs игнорировать значение регистра при поиске, добавьте следующую строку в файл .emacs:



(setq case-fold-search t)
И наоборот, чтобы задействовать чувствительность к регистру в процессе поиска, установите переменной значение выкл.:

(setq case-fold-search nil)
В других языках программирования Булевым переменным в значениях "вкл." и "выкл.", часто соответствуют значения переменных "true" и "false" или "1" и "0". Emacs, в соответствии с традициями LISP, использует для тех же целей "t" и "nil". Причем значение "t" ("истина"), является просто соглашением: все, что не "nil" ("ложь"), то "t"("истина"). Об этом нужно помнить при чтении документации по Emacs, в которой редко рекомендуется устанавливать значение переменной равной "t". Чаще можно встретить рекомендацию установить переменной значение "non-nil" ("t") для одного случая и значение "nil" для другого.

Чтобы сохранить клавиатурные макросы в файле ".emacs" так, чтобы можно было использовать макрокоманду без дополнительного переопределения, используется команда insert-kbd-macro, которая добавляет эквивалент макроопределения, написанный на Emacs LISP, в текущий буфер. Рассмотрим пример.

Удобная макрокоманда для пользователей SGML быстрый ввод комментариев. Чтобы определить макрос и начать запись макрокоманды, сначала нажмите C-x (, а затем наберите

<!-- -->
и нажмите клавишу перемещения курсора влево четыре раза. Это нужно для того, чтобы поместить курсор туда, откуда начинается печать комментария. Закончите запись макроса нажатием C-x ).

Чтобы присвоить записанной макрокоманде имя, нажмите M-x и наберите в командной строке минибуфера name-last-kbd-macro. Допустим это имя - sgml-comment.

Затем, отредактируйте файл .emacs, или его эквивалент в операционной системе. Вставьте пустую строку, куда позднее будет вставлено макроопределение. Нажмите M-x, а затем в командной строке минибуфера введите команду insert-kbd-macro. Emacs запросит имя вставляемой макрокоманды, наберите sgml-comment. Появится следующее:

(fset 'sgml-comment [?< ?! ?- ?- ? ? ?- ?- ?> left left left left])
Теперь в среде Emacs появилась новая команда sgml-comment. Установите новой команде комбинацию клавиш C-c о. Для этого в файл .emacs добавьте строку

(global-set-key "^Co" 'sgml-comment)
Комбинация C-c о не связана ни с какой существующей функцией Emacs. Сохраните файл .emacs. Выйдите из Emacs и запустите его снова. Опробуйте новую сохраненную макрокоманду в действии.


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