Регистры Emacs -- это места, куда вы можете записать текст или позиции для дальнейшего использования. Текст или прямоугольник, однажды записанный в регистр, может быть скопирован в буфер один или несколько раз; позицию, записанную в регистр, можно один или несколько раз использовать для передвижения к ней точки.
Каждый регистр имеет имя, состоящее из одиночного знака. Регистр может хранить кусок текста, позицию, прямоугольник, конфигурацию окна или имя файла, но только что-то одно из перечисленного в каждый конкретный момент. Всякий раз, когда вы сохраняете что-то в регистре, оно остается там до тех пор, пока вы не поместите в этот регистр что-то еще. Чтобы узнать, что содержит регистр r, используйте M-x view-register.
- M-x view-register RETr
- Выдать описание того, что содержит регистр r.
Запись позиций в регистры
Сохранение позиции записывает местоположение в буфере, так что вы можете вернуться туда позже. Перенос в записанную позицию заново выбирает буфер и передвигает точку в это место.
- C-x r SPCr
- Записать положение точки в регистр r (
point-to-register
). - C-x r j r
- Перейти в позицию, записанную в регистре r (
jump-to-register
).
Чтобы записать текущее положение точки в регистр, выберите имя r и наберите C-x r SPCr. Регистр r сохраняет записанное таким образом положение до тех пор, пока вы не запишете в этот регистр что-то другое.
Команда C-x j r передвигает точку в позицию, записанную в регистре r. Регистр не затрагивается, он продолжает хранить ту же самую позицию. Вы можете перейти в одну и ту же позицию, используя один и тот же регистр, любое число раз.
Если вы используете C-x r j для перехода к записанной позиции, но буфер, в котором она была записана, уже уничтожен, C-x r j пытается снова создать буфер, обращаясь к тому же файлу. Конечно, это работает только для буферов, которые обращались к файлам.
Запись текста в регистры
Если вы захотите вставить копию одного и того же куска текста несколько раз, использование списка уничтожений может оказаться неудобным, так как каждое последующее уничтожение сдвигает кусок текста все дальше вглубь списка. Альтернативой этому методу является сохранение текста в регистре с последующим его восстановлением.
- C-x r s r
- Копировать область в регистр r (
copy-to-register
). - C-x r i r
- Вставить текст из регистра r (
insert-register
).
C-x r s r записывает копию текста области в регистр с именем r. Запущенная с числовым аргументом, C-x r s r кроме того удаляет текст из буфера.
C-x r i r вставляет в буфер текст из регистра r. Обычно эта команда оставляет точку перед текстом, а метку располагает после него, но с числовым аргументом (C-u), наоборот, точку ставит после текста, а метку перед ним.
Запись прямоугольников в регистры
Регистр может содержать вместо линейного текста прямоугольник. Прямоугольники представляются в виде списка строк. See section Прямоугольники, для получения основной информации по прямоугольникам и о том, как они определяются в буфере.
- C-x r r r
- Копирует область-прямоугольник в регистр r (
copy-region-to-rectangle
). С числовым аргументом еще и удаляет его. - C-x r i r
- Вставляет прямоугольник, который записан в регистре r (если тот содержит прямоугольник) (
insert-register
).
Команда C-x r i r вставляет строку текста, если регистр содержит строку, и вставляет прямоугольник, если регистр содержит прямоугольник.
Смотрите также команду sort-columns
, которую можно рассматривать как команду сортировки прямоугольника. See section Сортировка текста.
Запись конфигурации окон в регистры
Вы можете записать в регистр конфигурацию окон в выбранном фрейме или даже конфигурацию всех окон во всех фреймах и позднее восстановить эту конфигурацию.
- C-x r w r
- Записать состояние окон выбранного фрейма в регистр r (
window-configuration-to-register
). - C-x r f r
- Записать состояние всех фреймов, включая все их окна, в регистр r (
frame-configuration-to-register
).
Используйте C-x r j r для восстановления конфигурации окон или фреймов. Это та же команда, что используется для восстановления позиции курсора. Когда вы восстанавливаете конфигурацию фреймов, все существующие фреймы, не входящие в эту конфигурацию, становятся невидимыми. Если вы вместо этого хотите удалить эти фреймы, используйте C-u C-x r j r.
Хранение чисел в регистрах
Существуют команды для записи числа в регистр, вставки его в буфер в десятичном виде и для увеличения этого числа. Эти команды могут быть полезны в макросах клавиатуры (see section Клавиатурные макросы).
- C-u число C-x r n рег
- Записать число в регистр рег (
number-to-register
). - C-u число C-x r + рег
- Увеличить число в регистре рег на заданное число (
increment-register
). - C-x r g рег
- Вставить число из регистра рег в буфер.
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 до другого. Шаблонное применение закладок -- запись места "где вы читали" в различных файлах.
- C-x r m RET
- Заложить закладку в текущем файле в позиции точки.
- C-x r m закладкаRET
- Заложить в точке закладку с именем закладка (
bookmark-set
). - C-x r b закладкаRET
- Перейти к закладке с именем закладка (
bookmark-jump
). - C-x r l
- Перечислить все закладки (
list-bookmarks
). - M-x bookmark-save
- Сохранить все текущие значения закладок в файле закладок, используемом по умолчанию.
Как правило закладки используются для записи одной текущей позиции в каждом из нескольких файлов. Таким образом, команда 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
говорит, сколько знаков контекста по обе стороны от позиции закладки нужно записывать.
Вот несколько дополнительных команд для работы с закладками:
- M-x bookmark-load RETимя-файлаRET
- Загрузить файл с именем имя-файла, содержащий список значений закладок. Вы можете использовать эту команду, как и команду
bookmark-write
, для работы с другими файлами закладок помимо вашего файла закладок по умолчанию. - M-x bookmark-write RETимя-файлаRET
- Сохранить все текущие значения закладок в файле имя-файла.
- M-x bookmark-delete RETзакладкаRET
- Удалить закладку с именем закладка.
- M-x bookmark-insert-location RETзакладкаRET
- Вставить в буфер имя файла, на который указывает закладка закладка.
- M-x bookmark-insert RETзакладкаRET
- Вставить в буфер содержимое файла, на который указывает закладка закладка.