[自我學習] 如何學習vim, 入門技巧到精通
更新日期:2020年3月5日
有這麼多開發環境以及編輯器
為何要學習使用 vim
我們先看下面這張學習曲線圖

從圖可以看到vim的學習曲線非常陡峭
幾乎一開始是看不到好的效果
但是一旦熟練之後就有如神助
說 vim 是史上最好的編輯器也不為過
可以提升 70% 左右的編輯效率
到最後不管是用什麼作業系統或是IDE
沒有 vim 根本沒辦法打程式
以一個程式設計人員來說熟練 vim 是最基本的技能
而且在大部分的 IDE 都匯聚有 vim 擴充軟件 (visual studio、eclipse、sublime)
第一階段 - 存活
一開始學習 vim只有一個訣竅
就是 "存活"
你必須承認你不可能利用一些小聰明讓你在一兩天內就會熟練
開啟 vim 後請不要亂按
在此我給完全新手們一個概念
平常編輯的時候我們使用 ctrl +c or ctrl+v 來複製貼上
ctrl 就是告訴電腦接下來的按鍵是快捷鍵
但 vim 不一樣
剛開始打開所有按鍵就已經都是快捷鍵
因此按下快捷鍵時不需要加上ctrl
由此可見 vim 在使用快捷鍵時有多方便
我們稱此 vim 模式叫做 normal mode
接著按下 i
我們會進入 vim 的 inset mode
此時即可開始編輯文件打想要打的字
按下 ESC 即可返回 normal mode
在 normal mode 下我們有幾個必須先學的指令
i → Insert 模式,按 ESC 回到 Normal 模式
x → 刪除目前游標所在的一個字符。
:wq →存檔+退出( :w 存檔, :q 退出)
dd → 刪除當前行,並把刪除的行存到剪貼板裡
p → 粘貼剪貼板
:q! →退出不保存 :qa! 強行退出所有的正在編輯的文件,就算別的文件有更改。
第二階段 - 感覺良好
第一階段學到的指令並不會讓你覺得 vim 好用
你也並不需要等到第一階段熟練才開始第二階段
你覺要的是更多感覺"方便"、"快速"的功能
但 vim 的指令非常多
剛開始學可以每天練習一個新指令
以下是常用的指令
1.各種插入模式
a → 在光標後並進入insert mode
o → 在當前行後插入一個新行並進入insert mode
O → 在當前行前插入一個新行並進入insert mode
s → 刪除當下字元並進入insert mode
cw → 替換從光標所在位置後到一個單詞結尾的字符並進入insert mode
2.簡單的移動光標
0 → 數字零,移動到行頭
^ → 到本行第一個不是blank字符的位置(所謂blank字符就是空格,tab,換行,回車等)
$ → 到本行行尾
/pattern → 搜尋pattern 的字符串 (可搭配正規表示法),按下n可搜尋下一個比對結果
3.複製/貼上
p → 貼在此行下 (P可貼在此行上)
yy → 拷貝當前行
4.Undo/Redo
u → undo
ctrl + r → redo
5.同時開啟多份文件
:sp <filename> → 顯示多份文件
:vsp <filename> → 重值切割顯示多份文件
ctrl +w + w → 移動游標到另一份文件
:tabnew <filename> → 以分頁開啟多份文件, gt,gT 切換分頁
第三階段 - 更好、更強、更快!!
vim有非常多的按鍵組合可以讓你在編輯上充滿效率
在此就不再增加文章篇幅
請各位直接下載圖片列印出來貼在牆壁上吧
一天多學習一到指令就會進步非常快

第四階段 - 定義你自己的 vim
在 home 目錄下管理一份你自己的 .vimrc
你的快捷鍵以及你的開發環境由自己定義
在此附上我自己使用的一些定義
都是相當基本的設定而且相當好用
以這行 ":nnoremap K i<CR><Esc>" 為例
我將大寫K設定成三個vim按鍵的組合
也就是先按下 i 接著按下 enter 最後按下 Esc 回到normal mode
可以直接用一個按鍵做出 bind key
此快捷組合可以將目前光標所在的位置切到下一行
set backspace=2
set history=50
set wrap
set number
nmap <F2> :setlocal spell!<cr>
:set mouse=a
":set nu
":set cursorline
:set paste
:set ttymouse=xterm2
:set expandtab
:set tabstop=4
"set guifont=monospace\ 10
map <slient> <PageUp> 1000<C-F>
map <slient> <PageDown> 1000<C-B>
map <Ctrl-Left> :tabprevious<CR>
map <Ctrl-Right> :tabnext<CR>
"syntax on
colorscheme torte
"colorscheme molokai
set cindent
set autoindent
:nnoremap K i<CR><Esc>
vim也可以使用很漂亮的配色
只要把配色相關檔案放在.vim folder 下即可
我使用的是 vim-colors-lucid
大家可以上網找自己喜歡的配色喔