首先介紹點
,標記
,區域
:
- 點:即光標所在位置
- 標記:用
C-Space
或者C-@
(即C-Shift-2)來做標記。 - 區域:
標記
與點
之間的內容即爲區域
1. 原始列模式
emacs以C-x r
開頭的命令來進行舉行矩形操作。首先用C-Space
進行標記,然後移動光標到矩形的對角位置作爲當前的點。 C-x <SPACE>
切換矩形標記模式,矩形塊高亮顯示。
- C-x r k 剪切一個矩形塊,作爲最新保存的矩形塊
- C-x r d 刪除一個矩形塊,不保存矩形塊
- C-x r M-w 保存矩形塊,作爲最新保存的矩形塊
- C-x r y 粘貼最新保存的矩形塊
- C-x r o 插入同等寬度的空格矩形塊(相當於右移矩形塊的距離)
- C-x r c 清除一個矩形塊(使其變成空格)
- C-x r t string <RET> 在選定矩形塊的所有列前插入string
- C-x r N 在選定矩形塊的所有列前面插入序號(從1開始),如果選定矩形塊有空格,會自動取帶空格,如果選定矩形塊無空格,矩形塊會整體右移。
- C-x <SPACE> 切換矩形標記模式,矩形塊高亮顯示,同時還可以隨時調整矩形塊的大小。
- M-x delete-whitespace-rectangle 刪除矩形第一個字符左側的所有空格。
- M-x string-insert-rectangle <RET> string <RET> 在矩形塊前面插入string
2. cua-mode (Common User Access mode)
我感覺cua-mode
的列編輯模式更加符合操作習慣和人性化。在cua-mode
下還有cua-rect
和普通模式的區別。網上很多關於cua-mode
的文章都是互相抄,有錯誤,而且還從來不提怎麼進入和退出cua-mode
。SimonLiu在這裏重新整理補充並糾正了一些錯誤。
特別的,在cua-mode
下,C-c
,C-v
, C-x
, C-z
對應操作系統系統裏的複製、粘貼、剪切和恢復操作。cua-rect
模式的全部操作(除了輸入和切換),都是M-
開頭的組合鍵。
在cua-mode
下,按C-<RET>
會進入cua-rect
模式,並以鼠標位置作爲起點,也可以鼠標重新點擊新位置作爲起點,然後通過移動光標(比如C-n, C-f, M-f等操作)來選中一個rect範圍,這個rect會用另外的顏色顯示出來。之後我們 就可以很方便地對這個rect進行操作。比如[M-up],[M-down],[M-left],[M-right]可以移動這個rect範圍(字符不動),此時按<RET>
確定範圍(這樣可以移動鼠標到rect左側或者右側),或者再按一次C-<RET>
可以取消這個矩形,C-<Space>
可以退出cua-rect
模式並激活普通模式下的選擇。
- 進入和退出
cua-mode
: M-x cua-mode - 進入
cua-rect
模式:C-<RET> - 退出
cua-rect
模式: C-<Space>
cua-mode
下可以用以下命令進行列操作:
- 插入字符: 直接輸入字符即可。會在每行前(或後)都插入這個字符。取決於鼠標在前還是在後。如果需要在前面輸入,可以從右下往左上選取區域,或者按回車確認矩形範圍以後再移動鼠標。
- M-b: 用空格(tabs或者spaces)替換所有rect中的字符
- M-c: 去掉所有行左側的空格
- M-f: (fill)用單個字符填充rect(提示輸入一個字符)
- M-i: 對每行中第一個找到的數字進行加1操作(自動把0x開頭的當作十六進制數字)
- M-k: 剪切rect
- M-m: 拷貝rect
- M-n: 用一串自增的數字替換rect中的每一行(這個功能可以用來給每行編號)
- M-o: rect的內容右移,選中的rect用空格填充
- M-r: 用字符串替換符滿足正則表達式的字符串
- M-R: 上下反轉
- M-s: 把rect中的
每一行
替換爲一個字符串(提示輸入) - M-t: 把rect
整個
替換爲一個字符串(提示輸入) - M-l: 把rect中的內容全部轉換爲小寫
- M-u: 把rect中的內容全部轉換爲大寫
- C-c: 複製rect
- C-v: 粘貼rect
- C-x: 剪切rect
- C-z: undo
- M-|: 對rect執行一個shell命令