#emacs
#emacs
Вопрос:
Мне нужно повторно скопировать текст из прямоугольной области фиксированного размера, и я хотел бы иметь возможность сохранять форму этой прямоугольной области в регистре, чтобы мне не приходилось постоянно воссоздавать тот же размер.
-
cua-set-rectangle-mark
(<C-return>
) -
Переместите точку, чтобы создать область размером 8×16 (примечание: этот шаг я хочу удалить)
-
piture-clear-rectangle
(C-c C-k
) -
Переместите точку в новое местоположение.
-
picture-yank-rectangle
(C-c C-y
)
Я хотел бы заменить шаги 1 и 2 одной командой «вставить прямоугольную область из регистра». Возможно ли это?
Ответ №1:
Не проще ли было бы просто использовать макрос клавиатуры для этого?
Например.:-
C-x C-( [start recording kbd macro]
steps 1-2
C-x C-) [end recording kbd macro]
Затем
C-x e [execute kbd macro]
Комментарии:
1. О! Я использую их каждый день и все равно забыл о макросах:-D Хотя это определенно решает мою проблему, технически это не отвечает на вопрос; Я приму это как правильный ответ, если я не получу ответ на «сохранить прямоугольную область в регистре». Приветствую, Бен.
2. круто, я не знал сразу, как сохранить прямоугольник в регистре, но подумал, что это может решить проблему в любом случае 🙂 @phils нашел способ сделать то, что вы на самом деле хотите, однако, похоже, вам следует принять его ответ 🙂
3. Его ответ не отвечает на вопрос. Создание макроса и присвоение ему имени — лучший способ решить проблему.
4. Ах да, конечно, это не сохраняет форму . Клавиатурные макросы ftw, они ооочень полезны. 🙂
Ответ №2:
Вероятно, вы захотите использовать copy-rectangle-to-register
и insert-register
:
C-x r r запускает команду copy-rectangle-to-register, которая представляет собой интерактивную скомпилированную функцию Lisp в `register.el’.
Оно привязано к C-x r r.
(копирование прямоугольника в НАЧАЛО КОНЦА РЕГИСТРА РЕГИСТРАЦИИ и необязательный ФЛАГ УДАЛЕНИЯ)
Скопируйте прямоугольную область в регистр register. С префиксом arg также удалите. Чтобы вставить этот регистр в буфер, используйте C-x r g.
Вызываемый из программы, принимает четыре аргумента: REGISTER, START, END и DELETE-FLAG. НАЧАЛО и КОНЕЦ — это позиции буфера, задающие два угла прямоугольника.
вставить-зарегистрировать:
C-x r g запускает команду insert-register, которая представляет собой интерактивную скомпилированную функцию Lisp в `register.el’.
Оно привязано к C-x r g, C-x r i.
(регистр insert-register и необязательный аргумент)
Вставьте содержимое регистра register. (РЕГИСТР — это символ.) Обычно точка ставится перед и пометка после вставленного текста. Если необязательный второй аргумент не равен нулю, поставьте отметку перед и точку после. В интерактивном режиме второй аргумент не равен нулю, если указан префиксный аргумент.
Смотрите также:
C-xrc: clear-rectangle
C-xrd: delete-rectangle
C-xrk: kill-rectangle
C-xro: open-rectangle
C-xrr: copy-rectangle-to-register
C-xrt: string-rectangle
C-xry: yank-rectangle
Редактировать:
Верно, я совершенно неправильно понял вопрос.
Если вы все еще особенно хотите использовать регистры, вы могли бы сохранять и повторно выполнять перемещения точек с помощью чего-то вроде этого:
(set-register ?a [right right right down down])
(command-execute (get-register ?a))
Комментарии:
1. На самом деле это не решает проблему. Это копирует текст в прямоугольной области в регистр, это не сохраняет прямоугольную форму в регистре.