Vim基礎篇——快速移動
最初使用Vim時,初學者經常會感到不適應,因為它的移動方式和一般的編輯器差別很大。但是Vim的魅力就在於,當你學會Vim的移動方式後,你能迅速的把游標移動到你想要的位置。
本文介紹Vim中的移動方式:Vim中熟練的移動並不是指用hjkl移動,當你越熟練的掌握vim的移動方式,你會越少的使用hjkl移動方式。
hjkl are the tip of the top of the iceberg and very rarely used, at least in my case.
1、行內移動:
Test: This is a line with example text n
最基礎的移動方式是w/e/b/ge
w是向前移動到下一個單詞的第一個位置,大寫的W表示只使用空格作為分隔
" * 代表了游標的初始位置n" 每個字母代表了如果按下這個鍵會跳轉的位置nTest: This is a line with example textn* w w w w w w w wn* W W W W W W Wn
w前面可以加上數字,表示w命令重複幾次,比如3w等同於按下三次w
e是向前跳動到下一個【單詞的末尾】,這意味著如果當前游標在單詞的中間,按下e會跳轉到當前單詞的末尾。大寫的E表示只使用空格作為分隔
" * 代表了游標的初始位置n" 每個字母代表了如果按下這個鍵會跳轉的位置nTest: This is a line with example textn* ee e e e e e e en* E E E E E E E E n
b是向後移動到上一個【單詞的開頭】,這意味著如果當前游標在單詞的中間,按下b會跳轉到當前單詞的開頭。大寫的B表示只使用空格作為分隔
" * 代表了游標的初始位置n" 每個字母代表了如果按下這個鍵會跳轉的位置nTest: This is a line with example textnb b b b b b b b b *nB B B B B B B B * n
ge是向後移動到上一個【單詞的末尾】。大寫的gE表示只使用空格作為分隔
" * 代表了游標的初始位置n" 每個字母代表了如果按下這個鍵會跳轉的位置n" & 表示按下gEnTest: This is a line with example textn ee e e e e e e *n & & & & & & & * n
Notice:w/e/b/ge都是可以跨行移動的!
快速移動到行的開始和結束
$ 移動到行的末尾n0 移動到行的開頭n^ 移動到第一個非空白字元ng_ 移動到最後一個非空白字元n
0不能使用數字參數;但是$可以,$等同於1$,2$表示移動到下一行的末尾,同理3$...
行內移動到特定字元
【f+字元】表示移動到行內當前游標後面的第一個這個字元
【t+字元】表示移動到行內當前游標後的的第一個這個字元的前一個位置
【F+字元】為【f+字元】的反向
【T+字元】為【t+字元】的反向
這種移動方式不能跨行
" * 代表了游標的初始位置n" 每個字母代表了如果按下這個鍵會跳轉的位置n" & 表示按下fen" ! 表示按下tenTest: This is a line with example textn*& & & & &n * !n
注意到一個奇怪的現象,在第二行操作中,按下te會定位到line中的e,游標會移動到e的前一個字元n,如果再一次按下te,會定位到line中的e,游標會移動到e的前一個字元n,也就是說游標不會移動。
這樣就告訴我們:連續按下兩次【t+字元】和按下一次到達的位置一定是一樣的。
f/t/F/T均可以接受數字參數,3fe相當於按下三次fe
事實上,重複操作有另一種方式:【;】代表了重複查找字元,【,】是【;】的反向:
【fe;】等同於【fefe】等同於【2fe】
【fe,】等同於【feFe】
2、行間移動
滾動屏幕
<Ctrl-b> 向下移動一個屏幕
<Ctrl-f> 向上移動一個屏幕
<Ctrl-u> 向下移動半個屏幕
<Ctrl-d> 向上移動半個屏幕
文件位置移動
【數字+G】表示移動到文件的特定行
比如30G表示移動到第三十行
gg表示移動到文件的第一行
G表示移動到文件的最後一行
3、其他移動方式
【%】:找到當前游標 下或者之後 的第一個括弧,並移動到它匹配的括弧的位置
括弧包括:
([{}])/* */#if, #ifdef, #else, #elif, #endif
" * 代表了游標的初始位置n" 每個字母代表了如果按下這個鍵會跳轉的位置nint f(1, g(2, 3))n * %n % *n * %n % *n
推薦閱讀:
※替換兩個 Tags 之間字元串的 VIM 命令怎麼寫?(或者, g 的輸出如何作為 s 的輸入?)
※如何用 vim 的插件開發?有什麼實際中的技巧?
※到底 VIM 能配置到多強大的程度?
※怎麼向新手解釋 Emacs?
※有沒有vim學習,經典,權威,完整的書?
TAG:Vim |