vim指令一覽
2014-03-03 00:22:40

本文件標示說明

[a]表示按一下a鍵
[a]+[b]表示先按一下a鍵,再按一下b鍵
[Ctrl][a]表示按住[Ctrl]不放,再按一下a鍵
[Ctrl]([a]+[b])表示按住[Ctrl]不放,按一下a鍵,再按一下b鍵
[:command]表示在一般模式下,按下[:]後輸入command指令,再按下[Enter]

一般模式(normal mode)

移動(move)

[h]向右
[j]向下
[k]向上
[l]向左
[Ctrl][b](backward)向前翻一頁
[Ctrl][f](forward)向後翻一頁
[w](word)到下一個字首
[e](end)到下一個字尾
[b](backward)到上一個字首
[W](word)到下一個字首,略過標點符號
[E](end)到下一個字尾,略過標點符號
[B](backward)到上一個字首,略過標點符號
[^](head)到本行最前面第一個非空白字元
[$]到本行最後面
[0]到本行最前面
[H](high)到本頁最前面一行
[M](middle)到本頁中間那一行
[L](low)到本頁最後一行
[g]+[g]到本檔案第一行
[G]到本檔案最後一行
[:數字]跳至第[數字]行
[數字]+[|]+[Enter]跳至本行第[數字]個字元
[(]到下一個句首
[)]到上一個句首
[{]到下一個段落
[}]到上一個段落
[%]在成對的(),[],{}之間切換

刪除(delete)

[x]刪除游標所在位置字元
[X]刪除游標所在位置的前一個字元
[d]+[d](delete)刪除游標所在位置的那一行
[d]+[w]刪除游標所在位置到字尾
[d]+[b]刪除游標所在位置的前一個字元到字首
[d]+[g]+[g]或[d]+[1]+[G]刪除游標所在位置的那一行到檔案第一行
[d]+[G]刪除游標所在位置的那一行到檔案最後一行
[d]+[^]或[d]+[0]刪除游標所在位置的前一個字元到本行最前面
[d]+[$]或[D]刪除游標所在位置字元到本行最後面
[d][i]["] [d][i]['] [d][i][(]在游標所在位置刪除位在"/'/(的字串

複製與貼上(copy & paste)

[y]+[y](yank)複製游標所在位置的那一行
[y]+[w]複製游標所在位置到字尾
[y]+[b]複製游標所在位置的前一個字元到字首
[y]+[G]複製游標所在位置的那一行到檔案最後一行
[y]+[g]+[g]或[y]+[1]+[G]複製游標所在位置的那一行到檔案第一行
[p](put)在游標所在位置的字元之後(如果複製的是字或是選取的內容)或是後一行(如果複製的是行)貼上
[P]在游標所在位置的字元之前(如果複製的是字或是選取的內容)或是前一行(如果複製的是行)貼上
["]+[暫存區]+[y]+[y](register)將複製的那一行放到[暫存區]中,其中[暫存區]可以是任何一個英文字母
如果是小寫英文字母,則新複製的內容會蓋掉原本[暫存區]內容
如果是大寫英文字母,則會將新複製的內容接在[暫存區]內容的後面
["]+[暫存區]+[p]將[暫存區]的內容貼上
[:reg]或[:register]顯示[暫存區]的內容

取代(replace)

[r](replace)取代游標所在位置的字元按下[r]之後,再輸入要用來取代的字元
[R]進入取代模式按下[R]之後,接下來輸入的字都會蓋掉原本的內容,按[Esc]回到一般模式

縮排(indent)

[>]+[>]本行向內縮排一次
[<]+[<]本行向外縮排一次

回復(undo)

[u](undo)回復到編輯之前的狀態
[Ctrl][r](redo)回復到編輯之後的狀態
[U]在編輯前後的狀態之間切換,每做一次[U]視做新的一次編輯

其它

[.]重複上一次的編輯
[J](joint)將下一行接到本行最後面,中間用空白隔開也就是將本行最後的換行字元取代成空白
[~]切換游標所在位置的那一個字元的大小寫後,將游標移到下一個字元

進入插入模式(insert mode)

[i](insert)在游標所在位置字元之後插入
[I]在本行最後插入
[a](append)在游標所在位置字元之前插入
[A]在本行最前面插入
[o](open new line)在游標所在位置的那一行向下插入新的一行
[O]在游標所在位置的那一行向上插入新的一行
[s]刪除游標所在位置的那一個字元後插入
[S]或[c]+[c]刪除游標所在位置的那一行後插入
[c]刪除游標所在位置的那一個字後插入
[c]+[^]或[c]+[0]刪除游標所在位置的前一個字元到本行最前面後插入
[c]+[$]或[C]刪除游標所在位置字元到本行最後面後插入
[c][i]["] [c][i]['] [c][i][(]在游標所在位置刪除位在"/'/(的字串後插入

進入選取模式(virtual mode)

[v]在游標所在位置字元開始進行選取
[V]在游標所在位置的那一行開始以行為單位進行選取
[Ctrl][v]在游標所在位置字元開始以區塊的方式進行選取
[v][i]["] [v][i]['] [v][i][(]在游標所在位置選取位在"/'/(的字串

選取模式

移動

與一般模式的移動方式一樣

複製

[y]將選取的內容複製起來並回到一般模式

刪除

[d]將選取的內容刪除並回到一般模式

縮排

[>]將選取的行向內縮排一次並回到一般模式
[<]將選取的行向外縮排一次並回到一般模式

回到一般模式

[Esc]回到一般模式

插入模式

回到一般模式

[Esc]回到一般模式

指令

檔案操作

[:e 檔案](edit)開啟[檔案],如果檔案不存在則會開新檔案
[:w](write)存檔
[:q](quit)關閉檔案,如果檔案修改但尚未存檔,會不能關
[:q!]强制關閉檔案如果檔案修改但尚未存檔,則修改的部分會被捨棄
[:qw]存檔並關閉檔案
上面的指令都可以在前面加上a,對所有在buffer中的檔案都進行操作,例如:[:aq]就是關閉所有檔案

緩衝區操作(buffer)

[:buffers]列出所有的緩衝區
[:bn](buffer next)移到下一個緩衝區
[:bp](buffer previous)移到上一個緩衝區
[:b緩衝區號碼]移動到號碼為[緩衝區號碼]的緩衝區
[:bd](buffer delete)將目前開啟的檔案移出緩衝區,這個檔案必須要先儲存。
注意[:q]關閉檔案並不會將檔案移出緩衝區,要使用[:bd]才行。

執行外部指令

[:!指令]執行外部指令[指令]
[:!]執行前一個外部指令,根據history的順序
[:!!]執行前一次[:!指令]
[:silent !指令]不顯示output,vim可能會變黑,這時候要下[:redraw]讓vim重新產生畫面
[:r !指令]將指令產生的output讀入到目前的buffer

其它

當要連續執行兩個指令,則可以在指令之間用|分隔