2008-09-12 94 views
16

我讀過幾個地方的emacs中的矩形函數非常有用。我讀了一些關於他們的信息,我不明白爲什麼。我的意思是,當你想殺死一個段落時,你將第一行/第一列標記爲最後一列,這實際上是一個矩形,對吧?但你仍然可以使用正常的殺死...emacs中的矩形函數

那麼你會與他們做什麼樣的轉變?

回答

23

如果您在具有M-x delete-rectangleM-x kill-rectangle的文本文件的列中有數據,則可以刪除單列數據。同樣,M-x yank-rectangle將粘貼在一段文字中。

例如,採取以下文字:

1. alligator alphorn 
2. baboon  bugle 
3. crocodile cornet 
4. dog   didgeridoo 
5. elephant  euphonium 
6. fish   flugelhorn 
7. gopher  guitar 

選擇從鱷魚的一個與G吉他。選擇的開始和結束標出矩形的兩個對角。輸入M-x kill-rectangle你立刻擁有:

1. alphorn 
2. bugle 
3. cornet 
4. didgeridoo 
5. euphonium 
6. flugelhorn 
7. guitar 

接下來把關口上方行的末尾,添加一些空間,如果需要,並輸入M-x yank-rectangle和噹噹!你已經重新排序的列:

1. alphorn  alligator  
2. bugle  baboon  
3. cornet  crocodile  
4. didgeridoo dog   
5. euphonium elephant  
6. flugelhorn fish   
7. guitar  gopher  
15

我喜歡用矩形2種主要用途,將在每一行相同的文字,或殺死一列文本(類似戴維·韋伯的答案)。

有這些2個有用的快捷鍵,C-x r k會殺了一個矩形,C-x r t插入(有一個C-x r前綴其他矩形的命令,但這些是我經常使用的)。

所以我們假設你想採取一些代碼並對其進行格式化,以便你可以將它發佈在Stack Overflow帖子中......你需要以4個空格作爲前綴。所以,去第一行的開頭,C-SPC去標記,然後去最後一行的開頭,C-x r t <SPC> <SPC> <SPC> <SPC> <RET>,那就有它了!然後你可以複製並粘貼到堆棧溢出。我遇到了更復雜的情況,在這種情況下這很有用,您實際上在某個特定位置的每行上都要插入文本。

所以其他情況類似戴維·韋伯的情況下,如果你想殺死一個矩形,使用C-x r k雖然,因爲它只是快了很多;-)

另外,根據我的reference card我打印出來,當我剛開始,你可以做到以下幾點:

  • C-x r r:複製到寄存器
  • C-x r y:猛拉一個矩形
  • C-x r o :打開一個矩形,正確地移動文本(無論如何......)
  • C-x r c:空出一個矩形(我假設,這意味着用空格代替它,但你必須嘗試一下,看看)
  • C-x r t:用文字前綴(如上所述)
  • C-x r k:殺(如上所述)
+0

我有部分完成模式打開,所以對於YANK-rectangle我可以使用M-x y -r [tab] [ret],但是你是對的,默認快捷鍵更快。 – 2008-09-13 06:39:31

1

在emacs24 +還有還有功能進行編號行:

(rectangle-number-lines START END START-AT &optional FORMAT) 

Insert numbers in front of the region-rectangle. 

START-AT, if non-nil, should be a number from which to begin 
counting. FORMAT, if non-nil, should be a format string to pass 
to `format' along with the line count. When called interactively 
with a prefix argument, prompt for START-AT and FORMAT. 

它綁定到C-x r N默認情況下。