|
СокращенияСокращение -- это слово, которое при вставке расшифровывается в какой-нибудь другой текст. Расшифровки сокращений определяются пользователем. Например, вы можете определить `foo' как сокращение, расшифровывающееся в `find outer otter'. Определив такое сокращение, вы получите возможность вставлять в буфер `find outer otter', набирая f o o SPC. Второй вид работы с сокращениями называется динамической расшифровкой сокращений. Вы используете динамическую расшифровку сокращений с помощью явной команды, раскрывающей буквы перед точкой путем поиска в этом буфере других слов, которые начинаются с таких же букв. Смотрите раздел Динамическая расшифровка сокращений. Понятия о сокращенияхСокращение -- это слово, которое было определено как расшифровывающееся в заданную расшифровку. Когда вы вставляете после сокращения знак, разделяющий слова, сокращение раскрывается, заменяясь на расшифровку. Например, если `foo' определено как сокращение, расшифровывающееся в `find outer otter', то вы можете вставить в буфер `find outer otter.', напечатав f o o .. Сокращения расшифровываются, только когда включён режим Abbrev
(второстепенный режим). Выключение режима Abbrev не вызывает забвения
определений сокращений, но они не расшифровываются, пока режим Abbrev не будет
снова включён. Команда M-x abbrev-mode переключает режим Abbrev. С
числовым аргументом она включает этот режим, если аргумент положительный, в
противном случае -- выключает его. Смотрите раздел Второстепенные
режимы. Символ Определения сокращений могут быть зависящими от режима, то есть действовать только в одном основном режиме. Сокращения могут также иметь глобальные определения, которые являются активными во всех основных режимах. Одни и те же сокращения могут иметь глобальное определение и различные зависящие от режима определения для разных основных режимов. Зависящее от режима определение для текущего основного режима перекрывает глобальное определение. Сокращения можно определять интерактивно во время сеанса редактирования. Списки определений сокращений могут также храниться в файлах и перезагружаться в последующих сеансах. Некоторые пользователи держат обширные списки сокращений и загружают их в каждом сеансе. Определение сокращений
Обычный способ определить сокращение
-- войти в текст, который вы хотите зашифровывать, установить после него точку и
набрать C-x a g ( Нулевой аргумент для C-x a g означает, что в качестве расшифровки определяемого сокращения следует использовать содержимое области. Команда C-x a l
( Если находящийся в буфере текст является сокращением, а не его
расшифровкой, используйте команду C-x a i g
( Чтобы изменить определение сокращения, просто добавьте новое определение. Вас спросят о подтверждении, если такое сокращение уже определено. Чтобы уничтожить определение сокращения, дайте команде определения сокращений отрицательный аргумент: C-u - C-x a g или C-u - C-x a l. Первая удаляет глобальное определение, а вторая --- свойственное для режима. M-x kill-all-abbrevs уничтожает все имеющиеся определения сокращений, как глобальные, так и локальные. Управление расшифровкой сокращенияСокращение расшифровывается всякий раз, когда оно присутствует в буфере непосредственно перед точкой, и вы набираете самовставляющийся пробельный знак или знак пунктуации (SPC, запятую и тому подобное). Более точно, любой знак, не являющийся частью слова, раскрывает сокращение, а любой знак, который может быть частью слова, может быть частью сокращения. Наиболее общий способ использования сокращения -- вставить его и ввести затем знак препинания. Расшифровка сокращения сохраняет регистр букв; таким
образом, `foo' расшифровывается в `find outer otter';
`Foo' в `Find outer otter', а `FOO' в
`FIND OUTER OTTER' или в `Find Outer Otter' в
зависимости от значения переменной Для управления расшифровкой сокращений используются следующие команды:
Вы можете захотеть расшифровать
сокращение с присоединенной приставкой; например, если `cnst'
раскрывается в `construction', вы могли бы захотеть использовать
его для ввода `reconstruction'. Набор `recnst' не
работает, так как это не обязательно определённое сокращение. В этом случае
сработает применение команды M-' ( Если вы на самом деле хотите получить в буфере текст сокращения, а не его расшифровку, вы можете достичь желаемого, вставив последующую пунктуацию с помощью C-q. Таким образом, foo C-q , оставляет в буфере `foo,'. Если вы расшифровали сокращение по ошибке, то вы можете отменить расшифровку и вернуть само сокращение, напечатав для отмены C-_ (смотрите раздел Отмена сделанных изменений). Это также отменяет вставку знака, не являющегося частью слова, который развернул сокращение. Если вы хотите получить завершающий знак, не входящий в слово, плюс нераскрытое сокращение, то вы должны заново вставить завершающий знак, экранировав его командой C-q. Вы также можете использовать команду M-x unexpand-abbrev для отмены последнего раскрытия без удаления завершающего знака. M-x expand-region-abbrevs ищет в области определенные сокращения и предлагает заменить каждое найденное сокращение на его расшифровку. Это команда удобна, если вы набрали текст, используя сокращения, но забыли перед этим включить режим Abbrev. Она также может быть полезной вместе со специальным набором определений сокращений для выполнения нескольких глобальных замен за один раз. Эта команда действует, даже если выключен режим Abbrev. Расшифровка сокращения запускает ловушку Проверка и редактирование сокращений
Вывод M-x list-abbrevs выглядит так: (lisp-mode-abbrev-table) "dk" 0 "define-key" (global-abbrev-table) "dfn" 0 "definition" (Некоторые пустые строки, не имеющие смысловой значимости, и некоторые другие таблицы сокращений были опущены.) Строка, содержащая имя в круглых скобках, -- это заголовок для сокращений из
конкретной таблицы; Каждая непустая строка в таблице определяет одно сокращение. Слово в начале строки -- это само сокращение. Число, стоящее далее, говорит, сколько раз сокращение было расшифровано. Emacs отслеживает это, чтобы помочь вам увидеть, какие сокращения вы действительно используете, на случай, если вы решите уничтожить те, что не используются достаточно часто. Цепочка знаков в конце строки -- это и есть расшифровка. M-x edit-abbrevs позволяет
вам добавить, изменить или уничтожить определения сокращений при помощи
редактирования их списка в буфере Emacs. Этот список имеет тот же самый формат,
что и описанный выше. Буфер сокращений называется Команда Сохранение сокращенийЭти команды позволяют вам сохранять определения сокращений между сеансами редактирования.
M-x write-abbrev-file считывает имя файла, используя минибуфер, и записывает в этот файл описание всех текущих определений сокращений. Это используется для того, чтобы сохранить определения для использования в дальнейших сеансах. Хранимый в таком файле текст -- это последовательность лисповских выражений, которые при выполнении определяют такие же сокращения, какие у вас есть в данный момент. M-x
read-abbrev-file запрашивает имя файла, используя минибуфер, и затем
считывает этот файл, определяя сокращения согласно его содержимому. M-x
quietly-read-abbrev-file -- такая же команда, за исключением того, что она
не показывает в эхо-области сообщение о своей работе; в действительности это
удобно главным образом в файле Emacs автоматически предложит записать сокращения, если
вы изменили какое-либо из них, всякий раз, когда он предлагает сохранить все
файлы (для C-x s или C-x C-c). Это свойство может быть
отключено установкой переменной Команды M-x insert-abbrevs и M-x define-abbrevs похожи на предыдущие команды, но работают над текстом в буфере Emacs. M-x insert-abbrevs вставляет текст в текущий буфер перед точкой, описывая все текущие определения сокращений; M-x define-abbrevs полностью анализирует текущий буфер и соответственно определяет сокращения. Динамическая расшифровка сокращенийОписанные выше средства для работы с сокращениями действует автоматически по мере вставки текста, но все сокращения должны быть определены явно. В противоположность этому, динамические сокращения позволяют определять значения сокращений автоматически из содержимого буфера, но динамическая расшифровка происходит, только если вы запросите её явно.
Например, если буфер содержит `does this
follow' и вы наберете f o M-/, то результатом будет вставка
`follow', потому что это последнее слово в буфере, которое
начинается с `fo'. Числовой аргумент для M-/ говорит,
что следует брать вторую, третью и так далее отличающуюся расшифровку, найденную
при просмотре в обратном направлении от точки. Повтор M-/ ищет
альтернативную расшифровку путем дальнейшего просмотра назад. После того, как
будет просмотрен весь текст перед точкой, просматривается текст после точки.
Переменная После просмотра текущего буфера M-/ обычно
просматривает другие буферы, если вы не установили
Отрицательный аргумент для M-/, как C-u - M-/, говорит, что нужно искать расшифровки сначала после точки, а потом перед ней. Если вы повторяете M-/ для поиска другого раскрытия, не задавайте аргумент. При этом сначала будут попробованы все расшифровки после точки, а затем все расшифровки перед точкой. После того, как вы расшифровали динамическое сокращение, вы можете скопировать дополнительные слова, которые идут после расшифровки в оригинальном контексте. Просто печатайте SPC M-/ для каждого слова, которое вы хотите скопировать. Промежутки и пунктуация между словами копируется вместе с ними. Команда C-M-/ ( Динамическая расшифровка сокращений совершенно не зависит от режима Abbrev; расшифровка слова с помощью M-/ полностью независима от того, имеет ли оно определение как обыкновенное сокращение. Настройки для динамических сокращенийОбычно динамическая расшифровка сокращений игнорирует регистр при поиске раскрытий. Это значит, что расшифровка не обязана совпадать по регистру с раскрываемым словом. Это средство управляется переменной
Обычно динамическая расшифровка сокращений сохраняет образец регистра сокращения, которое вы напечатали, преобразуя расшифровку к регистру этого образца. Переменная Однако, если расшифровка содержит сложный набор букв разных регистров, и
сокращение совпадает с этим образцом, когда доходит до него, то расшифровка
копируется буквально, несмотря на значения этих переменных. Таким образом, если
буфер содержит Переменная В сценариях командного интерпретатора и Make-файлах к
именам переменных иногда приставляется `$', а иногда нет. Основные
режимы для такого рода текста могут настроить динамическую расшифровку, чтобы
она обрабатывала необязательный префикс, установив переменную
Назад | Вперед | Содержание |
|
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2024 |
Социальные сети