Sunday, June 30, 2013

Learning VIM (if using Windows)

vim在linux/unix底下因可以快速在shell和vim中切換,會有比較好的效益,然而,vim編輯器本身的能力即使在Windows底下仍是一樣的。
在Windows底下跑vim有幾種方法:
  1. 安裝gVim http://www.vim.org/download.php#pc
  2. 透過ssh等方式連到一台linux/unix的機器
  3. 使用Cygwin創立linux/unix模擬環境
純文字檔的編輯用方法1即可,但若是希望可以整合系統,同時也compile程式、執行、外部操作等,用方法2,3較合適。

//======================================

vim主要分成兩種模式:命令模式、編輯模式。我們一般notepad功能即是vim的編輯模式,鍵盤輸入什麼就出現什麼,而移動指標等操作需要透過方向鍵或滑鼠等。

vim可貴的地方在於命令模式,處於命令模式時,鍵盤輸入的東西並不會直接出現在螢幕,而是執行了所對應的指令,例如,j按鍵是下,k是上等。

vim越是熟悉之後,處於命令模式的比例越高,少數情況才進入輸入模式,如此狀況下編輯文件速度快。

//======================================

vim指令設計上其實是非常符合手指位置的(人體工學?)。一般而言,看到一份文件第一個用的指令是向下卷,即是指令 j ,可以使游標往下,而 j 恰好是右手食指位置,不需要移動手指就可以按到,向上的指令 k 則是位居第二名。

而有些則是從名稱的縮寫而來,例如 i 是insertion的縮寫 d 是delete等。

//======================================

vim非常適合處理反覆的情況,例如,往上的指令是 k ,若希望往上八行,打 8k 即可。
更深入的部分有巨集,使用指令 q ,可以記憶一連串的指令,然後再重複!(寫verilog十分需要)

//======================================

再者就是客制化,透過撰寫.vimrc這份設定文件,可以依照自己的需求設定vim,例如設定「編譯並執行」的快捷鍵、設定tab大小、設定程式syntax變色規則等。當移動到新的系統上,只需要將這份文件放到自己的home目錄,vim馬上又是自己最熟悉的樣子了。

//======================================

vim學習曲線比較陡,一開始可能會發現打文件反而變慢,必須經過一段時間才會達到效果。於是我畫了一張示意圖:

//======================================

Real Tutorial這裡:
  1. 基本指令(其實大概80%在用的都出現在此網頁):http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
  2. Vim Adventure,透過玩遊戲的方式學習vim: http://vim-adventures.com/
  3. Vim Cheat Sheet,圖片方式的指令集: http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
  4. Complete Tutorial: ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf
// end here