上一篇hjkl里面提到為什么不用方向鍵來移動光標(biāo)的重要原因是方向鍵離主鍵盤區(qū)比較遠(yuǎn),那么聰明的你肯定也會以此類推,ESC鍵離主鍵盤區(qū)也不近啊,當(dāng)初的vi設(shè)計者好像留了一個大坑。vim的各種移動都需要跑回normal模式,這樣是不是降低了效率呢?大神的回答是你應(yīng)該把大部分的時間都花在normal模式,insert只是用來輔助的,這就需要高頻使用ESC鍵了。
上篇里面有當(dāng)時的鍵盤,可以清楚地看到ESC鍵就在現(xiàn)在的TAB鍵處,還在左手小拇指的控制范圍之內(nèi)。那么現(xiàn)代的我們該默默忍受嗎?當(dāng)然不是,這也太不vimmer了。
vim默認(rèn)配置中,除了esc鍵可以退出編輯模式外,還有另外以下幾種方式:
1.CTRL-[,插入模式下這個鍵位跟esc鍵的效果完全一樣,而且也符合雙手不離開主鍵盤的原則,多練練就可以了。
2.CTRL-c,相比ctrl [, ctrl-c更加適合單手操作,在大部分情況下跟esc命令沒有區(qū)別,當(dāng)然也有極少數(shù)情況例外,主要有 不觸發(fā)InsertLeave事件,不進(jìn)行縮略詞補全。
3.CTRL-o,可以返回normal模式執(zhí)行一次命令之后再返回insert模式,這個方式在高效率編輯方面還是很有用的,如果你只想執(zhí)行一下命令然后再重新編輯,就不用先按Esc鍵執(zhí)行完命令之后在按i進(jìn)入編輯,現(xiàn)在不常用也沒關(guān)系,記住就好,將來想優(yōu)化效率的時候再嘗試一下。
4.CTRL-@,插入上次輸入的內(nèi)容并退出編輯模式,跟ctrl-o類似,都是需要自己去體會其中的精髓,用好了就可以提高效率。
上文說了,原本的ESC鍵是在Tab處,那么就讓它返回原處吧,這樣不好,因為tab鍵也是比較高頻按鍵,倒是下方的CapsLock好像沒什么用,事實證明,vim下基本可以不用capslock鍵,至少我大寫都是通過Shift來實現(xiàn),如果是一長串的大寫,可以先用小寫輸入,然后用vim的U鍵把它們轉(zhuǎn)換成大寫。
ESC鍵跟CapsLock鍵置換,具體方法參考:ESC-CapsLock按鍵置換
下面給出幾種自定義的方案,不過需要先搞懂vim的配置文件.vimrc,windows系統(tǒng)下一般是_vimrc,默認(rèn)情況下這個文件是不存在的,需要你去新建一個空白文件,如果還是不怎么懂,那么可以去百度或谷歌,教程很多。
inoremap jj <ESC>? ?作用是將jj鍵映射到ESC鍵,快速按兩下j將觸發(fā)ESC鍵
inoremap jk??<ESC>? 作用是將jk鍵映射到ESC鍵,快速按jk將觸發(fā)ESC鍵
以上幾種方式都各有利弊,我用過ctrl-[和ctrl-c,映射也用過一段時間,感覺ctrl-c更適合單手操作(別問我為什么要單手,自行體會),置換capslock很有優(yōu)勢,有人認(rèn)為形成習(xí)慣后去別人的機器上會很別扭。
我目前是用Ctrl-[來實現(xiàn),習(xí)慣了。
所以你認(rèn)為呢?
多折騰一下找到適合自己的很重要。