這一章我們會講到怎么更有效地學習Vim,不過在此之前需要先做一些小小的準備。
讓我們先創建一個mapping,這個mapping會為你的左手減輕很多負擔。執行下面的命令:
~~~
:inoremap jk <esc>
~~~
ok,現在進入插入模式然后敲擊`jk`。Vim會返回到常用模式,就像你敲擊了escape按鍵一樣。
在Vim中有很多默認的方式可以退出插入模式:
* `<esc>`
* `<c-c>`
* `<c-[>`
使用上面的這幾種方式,你都需要伸出你的爪子,這會讓你感到很不自在。使用`jk`會很棒,因為這兩個按鍵正好就在你最強健有力的兩個手指下面,并且你不用搞得好像在演奏吉他和弦似的移動手指。
有些人可能更喜歡使用`jj`,但我更鐘意`jk`,有兩個原因:
* 使用兩個不同的按鍵,你可以“滾動”你的手指而不是把同一個按鍵按兩次。
* 如果你出于習慣在常用模式下按了`jk`,只會將光標向下移動一下,然后又向上移動一下,最終光標還是停留在原來的位置。但是在常用模式下按了`jj`的話,只會把光標移動到一個不同的地方。
不過需要注意的是,如果在你所用的語言中`jk`會經常組合出現(例如德語),你可能就需要選擇一個不同的mapping了。
## 學習Map
ok,現在你已經有了一個新的mapping,你會怎么學習使用它呢?特別是你已經用了這么久的escape按鍵,使用escape按鍵都已經刻入了你的腦子中,以至于在編輯的時候你會不假思索的敲擊它。
重新學習一個mapping的竅門就是_強制_將之前的按鍵設置為不可用,_強迫_自己使用新的mapping。執行下面的命令:
~~~
:inoremap <esc> <nop>
~~~
這個命令會告訴Vim在插入模式下敲擊escape按鍵后執行`<nop>`(no operation),這樣escape按鍵在插入模式下就無效了。ok,現在你就_不得不_使用`jk`這個mapping來退出插入模式了。
一開始你可能不太適應,你還是會在插入模式下敲擊escape按鍵,并且以為已經退出到了常用模式,然后開始敲擊按鍵準備在常用模式下做一些事情,從而導致一些不需要的字符出現在你的文本中。這會讓你感到有些不爽,但如果你堅持一段時間后,你會驚訝的發現你的思維和手指會多么快的適應 新的mapping。用不到一到兩個小時你就不會再在插入模式下敲擊escape了。
這個方法適用于所有的用于替代原有操作方式的新mapping,包括在生活中也是如此。當你想改掉一個壞習慣的時候,你最好能夠想一些辦法使得這個壞習慣很難甚至是不能發生。
如果你想學會自己做飯,不想每天都吃蓋澆飯,那么每天下班的時候就不要去成都小吃了。這樣你就會在餓了的時候想辦法去做點東西吃,當前你先要確保你家里沒有泡面。
如果你想戒煙,那你就不要把煙帶在身上,把它放到車上。這樣當你的煙癮又犯了的時候,你會覺得走到車里去取煙是一件很蛋疼的事,這樣你就不會吸了。
## 練習
如果還是會在Vim的常用模式中使用方向鍵移動光標,那么就將它們映射為`<nop>`。
如果你在編輯模式下也會使用方向鍵,同樣的,映射為`<nop>`吧。
正確使用Vim的關鍵就是使得自己能夠快速的離開插入模式,然后在常用模式下進行移動。
- 前言
- 鳴謝
- 預備知識
- 打印信息
- 設置選項
- 基本映射
- 模式映射
- 精確映射
- Leaders
- 編輯你的Vimrc文件
- Abbreviations
- 更多的Mappings
- 鍛煉你的手指
- 本地緩沖區的選項設置和映射
- 自動命令
- 本地緩沖區縮寫
- 自動命令組
- Operator-Pending映射
- 更多Operator-Pending映射
- 狀態條
- 負責任的編碼
- 變量
- 變量作用域
- 條件語句
- 比較
- 函數
- 函數參數
- 數字
- 字符串
- 字符串函數
- Execute命令
- Normal命令
- 執行normal!
- 基本的正則表達式
- 實例研究:Grep 運算符(Operator),第一部分
- 實例研究:Grep運算符(Operator),第二部分
- 實例研究:Grep運算符(Operator),第三部分
- 列表
- 循環
- 字典
- 切換
- 函數式編程
- 路徑
- 創建一個完整的插件
- 舊社會下的插件配置方式
- 新希望:用Pathogen配置插件
- 檢測文件類型
- 基本語法高亮
- 高級語法高亮
- 更高級的語法高亮
- 基本折疊
- 高級折疊
- 段移動原理
- Potion段移動
- 外部命令
- 自動加載
- 文檔
- 發布
- 還剩下什么?