VIM 練級指南
Note
原文爲回覆吧友提問, 發表於 此帖四樓, 故內容有針對性, 措辭也稍嫌戲謔, 更與該帖上下文聯繫密切, 原不適合紀錄此處, 無奈貼吧環境不適合長久保存, 故轉錄於此, 除排版及明顯打字錯漏外, 並不修改。
一直都想寫些類似的東西, 但一直因爲各種原因沒完成, 現在隨便寫個簡陋的, 以後有時間再整理, 可按照這個練級。
- 學會盲打 - 之貳 - 將我這貼複製保存起來,以備後用,貼吧東西難保存。 
- 配置文件先從最簡開始, 在 5 級前別考慮配置插件, 千萬別硬背命令, 千萬別直接取用別人的配置文件。 - 基本還是長時間待在 - insert mode下, 會覺得 Vim 也不過爾爾, 也不好用。- 這個時侯, 編輯效率可能比用原來的一般編輯器還低, 別人問使用什麼編輯器時, 多半會回答:Vim 再配一個 nano, kate, kwrite, gedit, geany 或其它 IDE 之類的。 
- 養成習慣待在 - normal mode(normal 不是白叫的), 只有輸入時才進入- insert mode, 輸入完馬上- <ESC>學習- normal mode下的移動命令, 這個時侯輸入文字標準流程:- normal mode移動命令準確定位光標(記住,搜索命令也是移動命令)
- 進入 insert mode編輯(進入insert mode別只用i,要習慣視乎情況,使用IaAoOsC等)
- <ESC>返回- normal mode
 - 這個時候, 編輯效率應會恢復到和你之前用的普通編輯器一樣,甚至有少量提高。 
- 學習什麼是 operator (命令 - d- y- c等),什麼是 motion (所有能移動光標的命令,- h j k l w e f t / ?等等)。 學習 operator + motion 的方式,如- ct.(將當前光標到- .【點】之間的內容刪除並進入- insert mode準備修改) 學習基礎的 Ex 命令,- :s什麼的。- 這個時侯,編輯效率開始明顯提高,在用其它一般編輯器時,會開始覺得不習慣和低效率。 
- 學習 text-objects,知道 operator + text-objects 的方法,可進行手術般精準的定位和修改。 既然你主要用在 c/c++,舉一些在這個情況下有用的例子: - ci"- (由 change operator - c和 text-ojbects- i"組成) 這個命令會找到當前光標所在行的下一個- "括起來的字符串,清除引號裏面的內容,並進入- insert mode以方便修改。 用起來比解釋起來簡單,你可用- const char* hello = "Hello world"; - 類似這樣的代碼來測試。 
- yaB- (由 yank operator - y和 text-object- aB組成) 這個命令會將當前光標所在的代碼塊(- {}括起來的內容,包括花括號本身)複製到默認- register, 方便在其它地方用- p貼出來(當然,寫代碼不鼓勵 copy and paste),你可以用任何一個- {}來測試,然後找另外一個地方- p
- gUiw- (由 make uppercase operator - gU和 text-object- iw組成) 這個命令會將當前光標所在的- word全部變成大寫, 如將- max_size變成- MAX_SIZE- 這個時候,開始知道爲什麼 Vim 精確高效,而且並不是因爲全鍵盤無需鼠標。 
 
- 習慣 operator + motion 後,發現 . 命令很好用,多注意使用可重複的命令組合, 練習使用書簽定位, - q記錄宏,使用多個- register,使用- args,使用- buffer, 使用其他的 Ex 命令。- 這個時候,想不起沒用 Vim 之前的日子是怎麼過來的。 
- 開始 map 經常反覆使用的命令,開始寫 vimscript,開始知道自己需要什麼樣的插件。 試推薦幾個: pathogen 或 vundle,tagbar, CtrlP, Gundo, UltiSnips,surround,Syntastic,Conque,ack.vim,vim-commentary,fugitive(如果是 git 用戶)。 還有不少,但多對 c/c++ 沒直接幫助,就不提了。 - 這個時候,對其他編輯器提不起興趣,或許 emacs 除外。 
- 擁有完全個人化的 vimrc,基本進入化境,成爲江湖上的傳說, 常有旁人觀察你編輯後,激起雄心壯志想要學 Vim,嘗試幾個小時候因爲覺得熱鍵太不"人性化”而放棄, 但偶爾會向人提起他見過江湖上有你這麼一號人物。 
