1. 程式人生 > >vim 游標快速移動技巧總結(vim高階操作的基礎)

vim 游標快速移動技巧總結(vim高階操作的基礎)

以下說法,僅個人觀點。
vim移動方式,並非只有hjkl這樣簡單粗暴的方式。熟悉更多移動游標的方式,對其它類似複製、change、delete等操作都有意想不到的用處。比如d/abc表示刪除至abc字元之前,解釋一下就是/abc表示查詢關鍵詞abc,d表示刪除。總之,游標快速移動是進階vim最基本最重要的。
命令雖然多,但是用十次以上,就能熟練了,關鍵是有花時間學習的意義。

簡單的移動(適合小範圍移動)

hjkl
用熟了,相對其它編輯器或者滑鼠來說,確實挺方便的。
配合數字。
2j表示向下移動2行

利用查詢(適合大範圍移動)

/hello
向後查詢關鍵詞hello,回車就到了後面第一個hello處。
?hello
向前查詢關鍵詞hello
*向後查詢當前游標處的單詞
#向前查詢當前游標處的單詞

還有一個行內快速移動,利用f命令搜尋某字元方式(適合行內移動)
f表示向後移動到某字元
比如fa表示向後移動到字元a處
Fa表示向前移動到字元a處。
這個操作,我認為不如/?查詢用的爽,因為/?可以查詢完整的單詞。

利用w,b,以word為單位進行移動,類似hjkl(適合小範圍移動)

同理,配合數字。
2w表示向後移動2個word;
2b表示向前移動2個word;
2e表示向後移動2個word,但是會移動到word字元之後。
如果想忽略標點符號的word,就用大寫
W
B
E

移動到行首行尾(適合行內移動)

^表示移動到行首第一個word,即行首有空格的情況,不會移動到空格之前,而是移動到空格之後,第一個word之前;
0

表示移動到行首;即行首有空格的情況,會移動到空格之前;
$表示移動到行末;即行末有空格的情況,會移動到空格之後;
如果想移動到行末最後一個非空白的字元處,就輸入命令$b。一般來說,寫程式碼,行末不會有空格存在的。這條應用沒多大意義。

移動到文字開頭和文字結尾(適合大範圍移動)

gg表示移動到文字開頭;
G表示移動到文字結尾

利用行號移動到某一行(適合大範圍移動)

:123表示移動到第123行

翻頁(適合大範圍移動)

ctrl+f表示向下翻頁
ctrl+b表示向上翻頁

利用標記mark命令

ma表示標記該行為a;包括第幾列的資訊,都在標記a裡。
‘a表示跳轉到標記a處;會跳轉到標記a的行首。單引號’
`a表示跳轉到標記a處;會跳轉到標記a的行,包括第幾列。更精準。按鍵在波浪號處。

快速移動技巧基本就這些吧。
網上還有括號移動的,段落移動的,其實用上述技巧就夠了。如果沒有特別有意義的,不如熟練掌握上述技巧。
比如移動到上一個{,那麼輸入命令?{

熟悉快速移動技巧後。讓我們想想,對於其它操作行為有很多可以舉一反三的地方。
比如複製一部分文字,從time到tutor之間的內容。
The approximate time required to complete the tutor is 25-30 minutes.
最基本的就是用hjkl移動到time處,v命令,用hjkl移動到tutor,選中後,按y。命令結束。
熟悉快速移動後,/time回車,y/tutor。命令結束。
同理,如果delete,一樣。/time回車,d/tutor。命令結束。
同理,如果change,一樣。/time回車,c/tutor。命令結束。

change命令,適合修改程式碼。很有用。具體介紹可以輸入命令:help c
比如cc表示刪除本行並開始重寫。刪除本行同時執行insert模式。