Сохраните форму прямоугольного выделения в регистре Emacs - PullRequest
2 голосов
/ 12 мая 2011

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

  1. cua-set-rectangle-mark (<C-return>)

  2. Перемещение точки для создания региона 8x16 ( примечание: это шаг, который я хочуудалить )

  3. piture-clear-rectangle (C-c C-k)

  4. Переместить точку в новое местоположение.

  5. picture-yank-rectangle (C-c C-y)

Я бы хотел заменить шаги 1 и 2 одной командой «вставить прямоугольную область из регистра».Это возможно?

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Не проще ли для этого просто использовать макрос клавиатуры?

например: -.

C-x C-(   [start recording kbd macro]
steps 1-2
C-x C-)   [end recording kbd macro]

Тогда

C-x e     [execute kbd macro]
1 голос
/ 12 мая 2011

Вы, вероятно, хотите использовать copy-rectangle-to-register и insert-register:

C-x r r запускает команду copy-rectangle-to-register, которая является Интерактивная скомпилированная функция Lisp в `register.el '.

Это связано с C-XRR.

(скопировать прямоугольник в регистр. ЗАПУСТИТЬ КОНЕЦ НАЧАЛА И ДОПОЛНИТЕЛЬНО УДАЛИТЬ-ФЛАГ)

Скопировать прямоугольную область в регистр REGISTER. С префиксом arg удалите также. Чтобы вставить этот регистр в буфер, используйте C-x r g.

Вызывается из программы, принимает четыре аргумента: REGISTER, START, END и DELETE-FLAG. START и END - буферные позиции, дающие два угла прямоугольника.

вставить регистра:

C-x r g запускает команду insert-register, которая является интерактивной скомпилированная функция Lisp в `register.el '.

Он связан с C-x r g, C-x r i.

(вставить-зарегистрировать REGISTER & необязательный ARG)

Вставить содержимое регистра REGISTER. (РЕГИСТРАЦИЯ - это персонаж.) Обычно ставит точку перед и помечает после вставленного текста. Если необязательный второй аргумент не равен нулю, ставит отметку до и указывает после. В интерактивном режиме второй аргумент не равен nil, если указан префикс arg.

Смотри также:

C-x r c : clear-rectangle
C-x r d : delete-rectangle
C-x r k : kill-rectangle
C-x r o : open-rectangle
C-x r r : copy-rectangle-to-register
C-x r t : string-rectangle
C-x r y : yank-rectangle

EDIT:

Правильно, я совершенно не понял вопроса.

Если вы все еще особенно хотите использовать регистры, вы можете сохранить и повторно выполнить движения точек следующим образом:

(set-register ?a [right right right down down])
(command-execute (get-register ?a))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...