• Techo

[自我學習] 如何學習vim, 入門技巧到精通

更新日期: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

大家可以上網找自己喜歡的配色喔

0 次瀏覽
Logo2020.JPG
  • Instagram - White Circle
  • Google+ - White Circle
  • Facebook - White Circle

Contact Us

Techo私人程式家教

官方LINE ID : @tutortecho

zh-Hant.png

© Copyright 2018 by Sherry Wu and Techo Chao.

Proudly created with Wix.com,

but page loading is too slow,so I don't recommend it.