當(dāng)你弄熟了hjkl,正得意的“飛快”地上下左右移動光標(biāo)的,這時候需要給你潑潑冷水了。學(xué)會hjkl是第一步,忘記hjkl是接下來的方向。你看到這句話一定會感覺很裝逼,但是這句話是vim大神總結(jié)出來的“秘籍”,而且還專門為此做了一個練習(xí)的插件:wikitopian/hardmode。
這個插件的變態(tài)之處就在于沒有上下左右的概念,當(dāng)你call HardMode()之后,你會發(fā)現(xiàn)世界上竟有如此愚蠢的設(shè)計,瞬間又回到了當(dāng)初什么都不會的年代,各種不適應(yīng),估計不消幾秒,你就想要繳械投降了吧。此時你會看到屏幕下方來自大神的嘲諷——You are weak,看來大神為了培養(yǎng)新鮮血液真是用心良苦。
言歸正傳,除了hjkl之外,vim還有大量的更加高效的移動方式。主要有以下幾種:
w、 e、 W、? E、? $、? ^、0、? gg、 G、CTRL-f、CTRL-b

每個指令的作用幫助文檔里面都有比較詳細(xì)的介紹。比如:help w,上圖中的iw/aw需要配合別的指令來使用,下面會有事例。
解釋一下w/W的區(qū)別:比如“help_123"既是word也是WORD,而"help-123"是一個WORD,2個word。單個word一般是由字母/下劃線/數(shù)字等組成,具體組成是在iskeyword中定義,單個WORD包含所有非空格的字符。具體可參考。
上面的都是一般入門都會接觸的,下面是稍微高級一點但是非常重要的
+ / - ? ? ? ? ? ? ? ? ? 移動到下一行/上一行開頭
H / L / M ? ? ? ? ? ?移動到當(dāng)前屏幕的最上方/最下方/中間
{ / ( ? ? ? ? ? ? ? ? ? ?光標(biāo)向后移動一個段落(以空行隔開)/一句(通常以.結(jié)尾)
ctrl-e / ctrl-y ? ? ? 向上/向下滾動屏幕
Ctrl+d? / Ctrl+u ? 往前/向后滾動半屏
還有一些沒怎么用過,但是還是列出來
z<CR> ? ? ? ? ? ? ??將光標(biāo)所在行移動到屏幕頂端
z. ? ? ? ? ? ? ? ? ? ? ? 將光標(biāo)所在行移動到屏幕中間
z- ? ? ? ? ? ? ? ? ? ? ? 將光標(biāo)所在行移動到屏幕低端
掌握了上面的一些命令可以顯著地提升光標(biāo)移動的效率,但這還只能算是入門,下面這四個應(yīng)該可以說是vim的效率擔(dān)當(dāng)了。
f/F/t/T
比如如下一行字,光標(biāo)在開頭處,如何迅速定位到括號,并修改()里的內(nèi)容呢?
public void test(String paraW){}
光標(biāo)移到行首,依次輸入f(ci(,是不是很神奇?坐下坐下,正常操作。相比l以及w都略快吧,f和t的區(qū)別在于f會跳轉(zhuǎn)到行內(nèi)查找的字符(包含),而t會跳轉(zhuǎn)到查找到的字符的前一位(不包含),你可能會感覺上面的指令超綱了,在此稍微翻譯一下,f(是指將光標(biāo)移動到第一個左括號處,c表示修改,i(表示括號內(nèi)的內(nèi)容,連起來就是將光標(biāo)移動到左括號并修改括號里面的內(nèi)容。你是不是發(fā)現(xiàn)原來所謂的指令其實是非常簡潔而美麗的語言?
熟練掌握了以上移動指令后,hjkl可以退居二線了。回到hardmode,現(xiàn)在h/l可以用w/W/e/E或者f/F來代替,如果一行很長,f/F的效率絕對比左右移動高,j可以用0b,k可以用$w來代替,如果你感覺$鍵效率太低,可以map ,l $,具體可以參考之前的配置相關(guān)的內(nèi)容,雖然你會發(fā)現(xiàn)有的時候hjkl的效率可能會高一些,但是沒辦法,先忍一忍,熟練之后,再恢復(fù)easymode,到那時vim還是那個vim,你已經(jīng)不是那個只會上向左右的你了。
另外推薦一下武功秘籍:vim/vi 如何高效使用(鍵盤圖打印版),可以打印下來沒事多瞅瞅,多實踐就是了。

掌握了這一章的內(nèi)容,相信你已經(jīng)是一個合格的vimmer了。