Регистры

Регистры Emacs -- это места, куда вы можете записать текст или позиции для дальнейшего использования. Текст или прямоугольник, однажды записанный в регистр, может быть скопирован в буфер один или несколько раз; позицию, записанную в регистр, можно один или несколько раз использовать для передвижения к ней точки.

Каждый регистр имеет имя, состоящее из одиночного знака. Регистр может хранить кусок текста, позицию, прямоугольник, конфигурацию окна или имя файла, но только что-то одно из перечисленного в каждый конкретный момент. Всякий раз, когда вы сохраняете что-то в регистре, оно остается там до тех пор, пока вы не поместите в этот регистр что-то еще. Чтобы узнать, что содержит регистр r, используйте M-x view-register.

M-x view-register RET r
Выдать описание того, что содержит регистр r.

Запись позиций в регистры

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

C-x r SPC r
Записать положение точки в регистр r (point-to-register).
C-x r j r
Перейти в позицию, записанную в регистре r (jump-to-register).

Чтобы записать текущее положение точки в регистр, выберите имя r и наберите C-x r SPC r. Регистр 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), наоборот, точку ставит после текста, а метку перед ним.

Запись прямоугольников в регистры

Регистр может содержать вместо линейного текста прямоугольник. Прямоугольники представляются в виде списка строк. Смотрите раздел Прямоугольники, для получения основной информации по прямоугольникам и о том, как они определяются в буфере.

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, которую можно рассматривать как команду сортировки прямоугольника. Смотрите раздел Сортировка текста.

Запись конфигурации окон в регистры

Вы можете записать в регистр конфигурацию окон в выбранном фрейме или даже конфигурацию всех окон во всех фреймах и позднее восстановить эту конфигурацию.

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.

Хранение чисел в регистрах

Существуют команды для записи числа в регистр, вставки его в буфер в десятичном виде и для увеличения этого числа. Эти команды могут быть полезны в макросах клавиатуры (смотрите раздел Клавиатурные макросы).

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
Вставить в буфер содержимое файла, на который указывает закладка закладка.

Назад |  Вперед |  Содержание



Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2024