VIM 練級指南

Note

原文爲回覆吧友提問, 發表於 此帖四樓, 故內容有針對性, 措辭也稍嫌戲謔, 更與該帖上下文聯繫密切, 原不適合紀錄此處, 無奈貼吧環境不適合長久保存, 故轉錄於此, 除排版及明顯打字錯漏外, 並不修改。

一直都想寫些類似的東西, 但一直因爲各種原因沒完成, 現在隨便寫個簡陋的, 以後有時間再整理, 可按照這個練級。

  1. 學會盲打

    之貳

    將我這貼複製保存起來,以備後用,貼吧東西難保存。

  2. 配置文件先從最簡開始, 在 5 級前別考慮配置插件, 千萬別硬背命令, 千萬別直接取用別人的配置文件。

    基本還是長時間待在 insert mode 下, 會覺得 Vim 也不過爾爾, 也不好用。

    這個時侯, 編輯效率可能比用原來的一般編輯器還低, 別人問使用什麼編輯器時, 多半會回答:Vim 再配一個 nano, kate, kwrite, gedit, geany 或其它 IDE 之類的。

  3. 養成習慣待在 normal mode (normal 不是白叫的), 只有輸入時才進入 insert mode, 輸入完馬上 <ESC> 學習 normal mode 下的移動命令, 這個時侯輸入文字標準流程:

    1. normal mode 移動命令準確定位光標(記住,搜索命令也是移動命令)
    2. 進入 insert mode 編輯(進入 insert mode 別只用 i,要習慣視乎情況,使用 I a A o O s C 等)
    3. <ESC> 返回 normal mode

    這個時候, 編輯效率應會恢復到和你之前用的普通編輯器一樣,甚至有少量提高。

  4. 學習什麼是 operator (命令 d y c 等),什麼是 motion (所有能移動光標的命令,h j k l w e f t / ? 等等)。 學習 operator + motion 的方式,如 ct. (將當前光標到 . 【點】之間的內容刪除並進入 insert mode 準備修改) 學習基礎的 Ex 命令,:s 什麼的。

    這個時侯,編輯效率開始明顯提高,在用其它一般編輯器時,會開始覺得不習慣和低效率。

  5. 學習 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 精確高效,而且並不是因爲全鍵盤無需鼠標。

  6. 習慣 operator + motion 後,發現 . 命令很好用,多注意使用可重複的命令組合, 練習使用書簽定位,q 記錄宏,使用多個 register,使用 args,使用 buffer, 使用其他的 Ex 命令。

    這個時候,想不起沒用 Vim 之前的日子是怎麼過來的。

  7. 開始 map 經常反覆使用的命令,開始寫 vimscript,開始知道自己需要什麼樣的插件。 試推薦幾個: pathogen 或 vundle,tagbar, CtrlP, Gundo, UltiSnips,surround,Syntastic,Conque,ack.vim,vim-commentary,fugitive(如果是 git 用戶)。 還有不少,但多對 c/c++ 沒直接幫助,就不提了。

    這個時候,對其他編輯器提不起興趣,或許 emacs 除外。

  8. 擁有完全個人化的 vimrc,基本進入化境,成爲江湖上的傳說, 常有旁人觀察你編輯後,激起雄心壯志想要學 Vim,嘗試幾個小時候因爲覺得熱鍵太不"人性化”而放棄, 但偶爾會向人提起他見過江湖上有你這麼一號人物。