2011-05-11 61 views
2

我需要從固定大小的矩形區域重複複製文本,並且希望能夠將該矩形區域的形狀保存在寄存器中,所以我不需要必須不斷重新創建相同的大小。在Emacs寄存器中保存矩形選區的形狀

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

  2. 將光標移動到創建區域8×16(注:這是一步我想刪除

  3. piture-clear-rectangleC-c C-k

  4. 將點移到新位置。

  5. picture-yank-rectangleC-c C-y

我想用單取代步驟1和2 '粘貼矩形區域從寄存器' 命令。這可能嗎?

回答

2

簡單地使用鍵盤宏是否更容易?

如: -

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

然後

C-x e  [execute kbd macro] 
+0

D'哦!我每天都在使用它們,但仍然忘記了宏:-D雖然這絕對解決了我的問題,但它在技術上並不能解決問題;如果我沒有得到「在寄存器中保存矩形區域」的答案,我會接受這個答案作爲正確的答案。乾杯,本。 – Ben 2011-05-12 00:50:39

+0

很酷,我不知道如何將一個矩形保存到一個寄存器,但認爲這可能會排序問題無論如何:) @phils已經找到了一種方法來做你真正想要的,但是,似乎你應該接受他的回答:) – ljs 2011-05-12 06:13:12

+0

他的回答沒有回答這個問題。創建一個宏並給它起一個名字是解決這個問題的最好方法。 – Ben 2011-05-12 06:50:17

1

你可能想使用copy-rectangle-to-registerinsert-register

CX RR運行命令複製矩形到寄存器,這是'register.el'中的一個 交互編譯的Lisp函數。

它被綁定到C-x r r。

(複製矩形到寄存器寄存器開始END &可選DELETE-FLAG)

複印矩形區域到寄存器REGISTER。 使用前綴arg,也要刪除。 要將此寄存器插入緩衝區,請使用C-x r g。

從程序中調用,需要四個參數:REGISTER,START,END和DELETE-FLAG。 START和END是給出矩形兩個角的緩衝區位置。

插入寄存器:

C-X R G運行命令插入寄存器,它是在`register.el交互式 編譯Lisp函數」。

它被綁定到C-x r g,C-x r i。

(鑲嵌寄存器寄存器&可選ARG)

寄存器REGISTER的插入內容。(註冊是一個字符。) 通常在插入文本之前放置點並標記。 如果可選第二個參數不爲零,則在之前放置標記並指向之後。 以交互方式,如果提供前綴arg,則第二個arg非零。

參見:

C-X- [RÇclear-rectangle
C-X- [Rddelete-rectangle
C-X- [Rķkill-rectangle
C-X- [Røopen-rectangle
C-X- [R- [Rcopy-rectangle-to-register
C-X- [R 噸string-rectangle
C-X[RŸyank-rectangle

編輯:

對,我完全誤解了這個問題。

如果您仍然特別希望使用寄存器,可以爲您節省和像這樣的東西重新執行點運動:

(set-register ?a [right right right down down]) 
(command-execute (get-register ?a)) 
+0

這實際上並沒有解決問題。這將矩形區域中的文本複製到一個寄存器中,它不會將矩形_shape_保存在寄存器中。 – Ben 2011-05-12 06:47:48