Регистры Emacs -- это места, куда вы можете записать текст или позиции для дальнейшего использования. Текст или прямоугольник, однажды записанный в регистр, может быть скопирован в буфер один или несколько раз; позицию, записанную в регистр, можно один или несколько раз использовать для передвижения к ней точки.
Каждый регистр имеет имя, состоящее из одиночного знака. Регистр может хранить кусок текста, позицию, прямоугольник, конфигурацию окна или имя файла, но только что-то одно из перечисленного в каждый конкретный момент. Всякий раз, когда вы сохраняете что-то в регистре, оно остается там до тех пор, пока вы не поместите в этот регистр что-то еще. Чтобы узнать, что содержит регистр r, используйте M-x view-register.
Сохранение позиции записывает местоположение в буфере, так что вы можете вернуться туда позже. Перенос в записанную позицию заново выбирает буфер и передвигает точку в это место.
point-to-register
).
jump-to-register
).
Чтобы записать текущее положение точки в регистр, выберите имя r и наберите C-x r SPC r. Регистр r сохраняет записанное таким образом положение до тех пор, пока вы не запишете в этот регистр что-то другое.
Команда C-x j r передвигает точку в позицию, записанную в регистре r. Регистр не затрагивается, он продолжает хранить ту же самую позицию. Вы можете перейти в одну и ту же позицию, используя один и тот же регистр, любое число раз.
Если вы используете C-x r j для перехода к записанной позиции, но буфер, в котором она была записана, уже уничтожен, C-x r j пытается снова создать буфер, обращаясь к тому же файлу. Конечно, это работает только для буферов, которые обращались к файлам.
Если вы захотите вставить копию одного и того же куска текста несколько раз, использование списка уничтожений может оказаться неудобным, так как каждое последующее уничтожение сдвигает кусок текста все дальше вглубь списка. Альтернативой этому методу является сохранение текста в регистре с последующим его восстановлением.
copy-to-register
).
insert-register
).
C-x r s r записывает копию текста области в регистр с именем r. Запущенная с числовым аргументом, C-x r s r кроме того удаляет текст из буфера.
C-x r i r вставляет в буфер текст из регистра r. Обычно эта команда оставляет точку перед текстом, а метку располагает после него, но с числовым аргументом (C-u), наоборот, точку ставит после текста, а метку перед ним.
Регистр может содержать вместо линейного текста прямоугольник. Прямоугольники представляются в виде списка строк. Смотрите раздел Прямоугольники, для получения основной информации по прямоугольникам и о том, как они определяются в буфере.
copy-region-to-rectangle
). С числовым аргументом еще и удаляет
его.
insert-register
).
Команда C-x r i r вставляет строку текста, если регистр содержит строку, и вставляет прямоугольник, если регистр содержит прямоугольник.
Смотрите также команду sort-columns
, которую можно
рассматривать как команду сортировки прямоугольника. Смотрите раздел Сортировка текста.
Вы можете записать в регистр конфигурацию окон в выбранном фрейме или даже конфигурацию всех окон во всех фреймах и позднее восстановить эту конфигурацию.
window-configuration-to-register
).
frame-configuration-to-register
).
Используйте C-x r j r для восстановления конфигурации окон или фреймов. Это та же команда, что используется для восстановления позиции курсора. Когда вы восстанавливаете конфигурацию фреймов, все существующие фреймы, не входящие в эту конфигурацию, становятся невидимыми. Если вы вместо этого хотите удалить эти фреймы, используйте C-u C-x r j r.
Существуют команды для записи числа в регистр, вставки его в буфер в десятичном виде и для увеличения этого числа. Эти команды могут быть полезны в макросах клавиатуры (смотрите раздел Клавиатурные макросы).
number-to-register
).
increment-register
).
C-x r g -- это та же команда, что используется для вставки в буфер содержимого регистров другого типа.
Если вы часто обращаетесь к определенным именам файлов, вам будет удобно поместить эти имена в регистры. Вот код на Лиспе, используемый для записи имени файла в регистр:
(set-register ?r '(file . имя))
Например,
(set-register ?z '(file . "/gd/gnu/emacs/19.0/src/ChangeLog"))
помещает показанное имя файла в регистр `z'.
Чтобы обратиться к файлу, чье имя находится в регистре r, наберите C-x r j r. (Это та же команда, что используется для перехода к записанной позиции или восстановления конфигурации фреймов.)
Закладки отчасти похожи на регистры тем, что они записывают позиции, к которым вы можете перейти. В отличие от регистров, они имеют длинные имена и сохраняются автоматически от одного сеанса Emacs до другого. Шаблонное применение закладок -- запись места "где вы читали" в различных файлах.
bookmark-set
).
bookmark-jump
).
list-bookmarks
).
Как правило закладки используются для записи одной текущей позиции в каждом из нескольких файлов. Таким образом, команда C-x r m, устанавливающая закладку, по умолчанию использует в качестве имени закладки имя файла, к которому вы обращаетесь в данный момент. Если вы называете каждую закладку по имени файла, на который она указывает, то сможете удобно повторно обратиться к любому из этих файлов с помощью C-x r b и в то же время переместиться к позиции закладки.
Чтобы отобразить список всех ваших закладок в отдельном буфере,
наберите C-x r l (list-bookmarks
). Если вы переключитесь в
этот буфер, вы сможете отредактировать определения закладок или дать им
описания. Наберите в этом буфере C-h m для получения более
подробных сведений о специальных командах редактирования в нем.
Когда вы уничтожаете Emacs, он предложит вам сохранить значения закладок в вашем файле закладок по умолчанию, `~/.emacs.bmk', если вы изменяли какие-либо из этих значений. Вы также можете сохранить закладки в любое время с помощью команды M-x bookmark-save. Команды, работающие с закладками, автоматически загружают ваш файл закладок по умолчанию. Благодаря этим сохранениям и загрузкам закладки переходят от одного сеанса Emacs к другому.
Если вы установите переменную bookmark-save-flag
в значение
1, то каждая команда, устанавливающая закладку, также будет записывать
ваши закладки; при этом вы не потеряете значения закладок, даже если
Emacs останавливается аварийно. (Это значение, если оно является
числом, говорит, сколько изменений закладок проходит между
сохранениями.)
Значения позиций в закладках сохраняются вместе с окружающим
контекстом, так что bookmark-jump
может найти правильную позицию,
даже если файл был слегка изменен. Переменная
bookmark-search-size
говорит, сколько знаков контекста по обе
стороны от позиции закладки нужно записывать.
Вот несколько дополнительных команд для работы с закладками:
bookmark-write
, для работы с другими файлами закладок помимо
вашего файла закладок по умолчанию.