Vim 使用入門快速鍵
羅朝輝 (http://www.cnblogs.com/kesalin/)本文遵循“署名-非商業用途-保持一致”創作公用協議
Vim 和 Emac 都是利器啊,前段時間決定熟悉一套跨平台的編輯器,以便在 Win,Mac,Ubuntu 下都有相同的編輯體驗。
於是嘗試了一下 Vim,使用了一段時間,確實比 UE 之類的要高效。Win 平台下有 gVim, Mac 下也有 MacVim。
Vim 的學習曲線確實有點陡峭,剛開始不是那麼容易習慣的。查看協助文檔是必不可少的,其線上中文文檔連結如下:
Vim 線上中文文檔:http://vimcdoc.sourceforge.net/doc/help.html
這個文檔超級大而全,方便查閱,如果想入門試試 Vim 的話,不太適合,下面我整理了一些方便入門的常用快速鍵。
===========================================================
模式操作
===========================================================
Vim具有五種基本模式,預設是普通模式,在普通模式下是無法進行編輯的,需要進入插入模式。
(Window 下用記事本開啟一個 txt, 預設就是插入模式,所以就可以直接編輯,Vim 不是這樣的!!)
===========================================================
普通模式(normal mode)
插入模式(insert mode)
命令模式(command mode)
可視模式(visual mode)
替換模式(replace mode)
其他模式下要回到普通模式:
===========================================================
Esc
Ctrl + c
Ctrl + [
進入插入模式
===========================================================
iinsert 在游標前插入
Iinsert 在當前行的第一個非空白字元之前插入
aappend 在游標後插入
Aappend 將輸入焦點移動到在當前行的行尾來輸入文本
o在當前行下方新啟一行,並進入插入模式。
O在當前行上方新啟一行,並進入插入模式。
ssubstitute 用來刪除當前游標下的字元,然後進入到插入模式
cwchange word 用的較少,和 s 相似,只不過刪除的單位是單詞。
首先刪除由游標(包括游標)開始的一個單詞,然後進入插入模式,
進入命令模式:
===========================================================
:, /
:之後,使用方向鍵可以調出曆史命令。甚至輸入:s之後,
會對曆史命令進行過濾,只調出以s開頭的曆史命令。
:help command查看協助文檔
::查看命令列模式的協助
進入可視模式:該模式下方便對文本進行選擇
===========================================================
v, V, Ctrl+v
vvisual,可視,以字元為單位移動
V可視,以行為單位移動
Ctrl + v可視,以塊為單位移動
可視塊模式應用:添加多行的 // 注釋
首先將游標移動到要該代碼塊第一行的行首字母上,進入可視塊模式,
然後移動游標到該代碼塊的最後一行的行首字母上,這時會高亮顯示一列。
之後鍵入 I,注意不是i,此時資訊區顯示的是插入模式了,
然後鍵入注釋符"//",將第一行注釋掉,而其他行沒有變化。
不用著急,最後鍵入Esc退回到普通模式。
這時其他被選中的行的前面都添加了注釋符,從而都被注釋掉了
進入替換模式
===========================================================
r, R
rreplace,該鍵只是用於替換游標所在的單個字元而已。
R持續替換直至退出 R 模式,在該模式下可以按照 backspace 恢複
===========================================================
關於模式的更多說明請查看Vim協助文檔,使用命令:
:help mode-switching
===========================================================
檔案操作
===========================================================
分割視窗
===========================================================
:sp vim.txtsplit,水平分割視窗
:vs vim.txtvertical split,垂直地分割視窗可視塊模式來完成了。
視窗切換
===========================================================
Ctrl + w + [h, j, k, l]
Ctrl在Vim中"^"一般表示Ctrl按鍵
wwindow
h,j,k,l就是上下左右四個方向
關閉視窗
===========================================================
Ctrl + w + [c]關閉當前視窗
Ctrl + w + [o]關閉其他視窗
儲存檔案
===========================================================
:wwrite,儲存當前檔案
:wawriteall,儲存所有檔案
退出檔案
===========================================================
:qquit,關閉當前視窗或者當前標籤頁
:wqwrite + quit,先儲存再關閉
===========================================================
導航以及跳轉
===========================================================
Vim中的移動可以分為兩類:導航以及跳轉。
導航是小範圍的移動;而跳轉是大範圍且並不確定執行後游標位置的移動。
Vim協助文檔裡面將這類操作叫做motion操作。可查看協助:
:help motion
導航
===========================================================
h, j, k, l, w, e, b, f, F, t, ,, ;
h, j, k, l上下左右四個方向移動
wword,以單詞為單位正向移動,游標停在第一個字母上
eend,以單詞為單位正向移動,游標停在最後一個字母上
bback,以單詞為單位反向移動,游標停在第一個字母上
f + keyforward,移動到該行的下一個出現字元(key)的位置,
然後可以按下 ; 正向迴圈移動或者 , 反向迴圈移動
F + key用法與 f 相同,只不過是反向移動
ttill,效果與 f 類似,只不過 f 會將游標放置在目標字元上,
而 t 是將游標放置在目標字元的前一個字元上。
跳轉
===========================================================
^, 0, $, %, [[, ]], gg, G, L, H, M, m, ', :[number]
^移動到本行第一個非空白字元處
0移動到行首(參考命令 I)
$移動到行尾(參考命令 A)
%在本行中正向尋找或調整的配對字元(([{}])),
]]按鍵組合,在文本中t跳轉到下一個位於行首的'{'字元
[[類似於 ]],只不過是反向
gg跳轉到整個文本的第一行
G跳轉到整個文本的最後一行
Hhigh,跳轉到當前螢幕顯示文本範圍內的第一行
Llow,跳轉到當前螢幕顯示文本範圍內的最後一行
Mmiddle,將游標移動到螢幕顯示文本範圍的中間
m按鍵組合,與 Vim 的寄存器有關(請看文檔 :help registers)
m - mark,輸入 m 之後再輸入寄存器序號(a - z, A - Z),
就將當前游標位置資訊放到寄存器中保持,相當於設定了書籤。
'按鍵組合,後跟寄存器序號,跳轉到 m 設定的書籤處
:[number]是命令模式下的用法,跳轉到指定行,number 為行數
翻頁
===========================================================
Ctrl + f, Ctrl + b, Ctrl + d, Ctrl + u
Ctrl + fforward,相當於 PageDown
Ctrl + bback,相當於 PageUp
Ctrl + ddown,正向翻半頁
Ctrl + uup,反向翻半頁
===========================================================
編輯操作
===========================================================
刪除
===========================================================
x, d + [跳轉/移動]
x剪下,內容儲存在寄存器 x 中
d + 跳轉/移動delete,按鍵組合,刪除並經內容儲存到寄存器 x 中
dwdelete word,正向刪除單詞
d0反向刪除到行首
d$正向刪除到行尾
dd刪除整行
d^刪除之本行第一個非空白字元處
移動
===========================================================
x, y, yy, Y, p, P, "+y, "+p
移動文本其實是一個組合的操作:
首先選擇要移動的文本;
然後剪下或者複製該文本;
最後粘帖該文本。
x剪下
yyank,複製,內容儲存在寄存器 x 中
Y, yy複製游標所在行
ppaste,將寄存器 x 中儲存的文本取出並粘貼在游標位置之後
P同 p, 只是粘貼在游標位置之前
" + y複製文本到系統複製粘帖板(注意不是 Vim 的寄存器 x 了)
" + p是從系統複製粘帖板取出文本進行粘帖操作。
撤銷重做
===========================================================
u, Ctrl + r
uundo,撤銷
Ctrl + rredo,重做
尋找
===========================================================
/ + key
/後跟要尋找的字串,然後輸入 n 迴圈尋找。尋找字串支援正則匹配式。