塊選擇(Visual Block)
Vim的大部分命令都是以行爲單位的,有時候想要刪除、粘貼或複製特定區域,那麼如何搞定一塊範圍呢?
一般模式下,塊選擇的按鍵意義 |
|
v |
字符選擇,將光標經過的字符選擇 |
V |
行選擇,將光標經過的行選擇 |
[Ctrl]+v |
矩形選擇,可以用矩形的方式選擇數據 |
y |
將選中地方複製起來 |
d |
將選中地方刪除 |
小寫v的效果,以第一行的s爲光標起點,往下走:
這個效果很像windows用鼠標操作的效果。
大寫V的效果,以第一行的s爲光標起點,往下走:
以行爲單位,只要經過的行都被選擇。
[Ctrl]+v的效果,以第一行的s爲光標起點,往下走:
矩形選擇,起點爲左上角,落點爲右下角。按下y後,將光標移動到第一行末尾分號處後,p粘貼,效果如下圖
As you see,挺實用的, Vim的大部分命令都是以行爲單位的,有時候想要刪除、粘貼或複製特定區域
範例:給一大段代碼加上//,註釋掉
比如現在想把161行到170行的兩個函數定義註釋掉。
這裏我們結合vim的.命令和塊選擇,(vim的.命令會記住上一次的操作)
當前光標處在161行,I//<ESC>後將定位到該行頭部,並且插入//註釋,後退出插入模式。然後按下大寫V,然後按下170G,將選中161到170行,接下來要對這些選中的行執行.命令(即I//<ESC>),使用命令:normal對整個範圍同時執行.命令。
:’<,’>normal.命令可以解讀爲對高亮區中的每一行,對其執行普通模式下的.命令。
最後光標處在170行。
(當然也可以直接:161,170 normal I//,normal可以執行任意的普通模式的命令,I會自動切換到插入模式,但是修改完成之後,vim會自動返回普通模式)