Vim是從vi發(fā)展起來(lái)的一個(gè)超簡(jiǎn)潔的文本編輯器辛友,全稱為
Vi IMporved
。使用vim可以實(shí)現(xiàn)全鍵盤操作孕豹,擺脫鼠標(biāo)操作痛苦框弛。
Vim簡(jiǎn)介
Vim的設(shè)計(jì)理念是命令的組合辛辨。在Vim中可以使用各種各樣的組合命令來(lái)完成我們的編輯。模式是一個(gè)編輯器所必備的瑟枫,幾乎所有的編輯器都會(huì)有插入和執(zhí)行兩種模式斗搞,可以用鍵盤和鼠標(biāo)完成模式的切換和命令的執(zhí)行。Vim具有挺多種模式慷妙,常用的有普通模式僻焚、插入模式、可視模式和命令行模式景殷。
其中Vim強(qiáng)大的編輯能力有很大一部分來(lái)源于它的普通模式溅呢,而普通模式的強(qiáng)大就在于命令的組合澡屡。在本文的后半部分我們將看到普通模式下的一些常用命令猿挚。
在正式開始盛宴之前,我們先來(lái)幾條小小的約定驶鹉。
1. 停頓時(shí)請(qǐng)移開畫筆绩蜻。
不同于其他編輯器將插入模式作為默認(rèn)狀態(tài),普通模式才是Vim的默認(rèn)狀態(tài)室埋。所以办绝,只在編寫代碼的那幾分鐘內(nèi)進(jìn)入插入模式,其他時(shí)候請(qǐng)保持普通模式姚淆。
2. 告別esc
孕蝉,遠(yuǎn)離方向鍵。
Vim可以有兩種方式實(shí)現(xiàn)普通模式和插入模式之間的切換腌逢,esc
和<C-[>
(就是Control+[
)降淮,可兩種方式都很難操作,esc
太遠(yuǎn)搏讶,Control
偏下佳鳖,為此我們可以嘗試調(diào)換Capslock
和Control
的位置,并將<C-[>
作為默認(rèn)切換方式媒惕。
方向鍵由于距離太遠(yuǎn)將會(huì)極大的減緩我們的操作效率系吩,Vim中我們將用hjkl
分表代表上下左右。
3. 強(qiáng)大的重復(fù)操作符.
之所以將它放在約定中妒蔚,是因?yàn)槭褂弥貜?fù)操作會(huì)呈幾何倍數(shù)的提高我們的效率关摇。.
命令可以重復(fù)修改上次的操作鸥滨,它是Vim中最強(qiáng)大的多面手尊沸。
插入模式
前面提到大部分命令在普通模式下執(zhí)行,不過(guò)有些功能在插入模式下可以更好的執(zhí)行尊搬。
-
<C-a>
跳轉(zhuǎn)到當(dāng)前行首 -
<C-b>
向前移動(dòng)一個(gè)單詞 -
<C-d>
減少縮進(jìn) -
<C-h>
刪除前一個(gè)字符(同Backspace
) -
<C-k>
刪除當(dāng)前行光標(biāo)后面的內(nèi)容 -
<C-w>
刪除前一個(gè)單詞 -
<C-u>
刪除至行首 -
<C-t>
增加縮進(jìn)
這里只列出幾個(gè)較常用的,更多可以查看:help insert-index
土涝,里面有很詳細(xì)的命令解釋佛寿,另外這些命令并不是Vim獨(dú)有的,在shell中一樣可以用但壮。
普通模式
普通模式下我們可以執(zhí)行大多數(shù)操作冀泻,并可以將操作符和動(dòng)作命令結(jié)合起來(lái)實(shí)現(xiàn)強(qiáng)大的功能。還記得怎么進(jìn)入普通模式嗎蜡饵?對(duì)了弹渔,就是<C-[>
。
1. 移動(dòng)和跳轉(zhuǎn)
單行跳轉(zhuǎn)
-
h
左移一個(gè)字符 -
j
下移一個(gè)字符 -
k
上移一個(gè)字符 -
l
右移一個(gè)字符 -
10h
向下移動(dòng)10行
單詞跳轉(zhuǎn)
-
w
跳到下一個(gè)單詞的詞首 -
e
跳到下一個(gè)單詞的詞尾 -
b
跳到上一個(gè)單詞的詞首 -
nw
跳轉(zhuǎn)到后面第n個(gè)單詞
行內(nèi)跳轉(zhuǎn)
-
^
跳到當(dāng)前行的開頭(忽視行首空格) -
0
或|
跳到當(dāng)前行的開頭(包括行首空格) -
$
或 跳到當(dāng)前行的行尾 -
g _
跳到當(dāng)前行的行尾(不包括空格) -
f x
跳到本行的下一個(gè)x處 -
F x
跳到本行的上一個(gè)x處 -
;
重復(fù)上一次跳轉(zhuǎn) -
n|
跳到當(dāng)前行的第n列
文檔內(nèi)跳轉(zhuǎn)
-
gg
跳到文檔第一行 -
G
跳到文檔最后一行 -
ngg
或nG
跳到文檔的第n行 -
+
跳到下一行行首 -
-
跳到上一行行首
當(dāng)前屏幕跳轉(zhuǎn)
-
H
移動(dòng)到當(dāng)前屏幕的頂端 -
M
移動(dòng)到當(dāng)前屏幕的中間 -
L
移動(dòng)到當(dāng)前屏幕的底端
移動(dòng)當(dāng)前行
-
zz
移動(dòng)當(dāng)前行到中間 -
zt
移動(dòng)當(dāng)前行到屏幕頂端 -
zb
移動(dòng)當(dāng)前行到屏幕底端
2. 搜索和標(biāo)記
文檔內(nèi)檢索
-
/
+xxx
查找xxx -
*
查找下一個(gè)光標(biāo)所在的單詞 -
#
查找上一個(gè)光標(biāo)所在的單詞 -
n
跳到下一個(gè)查找的單詞 -
N
跳到上一個(gè)查找的單詞 -
:noh
取消本次高亮
文檔內(nèi)標(biāo)記
-
m x
標(biāo)記當(dāng)前位置為x -
' x
跳到標(biāo)記為x的位置 -
' '
跳到跳轉(zhuǎn)之前的位置
3. 即時(shí)執(zhí)行操作
切換到插入模式
-
i
插入到光標(biāo)前 -
a
插入到光標(biāo)后 -
I
插入到當(dāng)前行的開始 -
A
插入到當(dāng)前行的末尾 -
o
向下插入一行 -
O
向上插入一行
普通模式下編輯
-
r
修改當(dāng)前字符(改完后自動(dòng)切換) -
R
修改自光標(biāo)起及之后的字符(需手動(dòng)切換到普通模式) -
x
刪除當(dāng)前字符 -
X
刪除光標(biāo)前的字符 -
s
刪除當(dāng)前字符并進(jìn)入插入模式 -
S
刪除當(dāng)前行并進(jìn)入插入模式 -
c
修改(一般用于合成命令) -
d
剪切(一般用于合成命令) -
y
復(fù)制(一般用于合成命令) -
dd
刪除當(dāng)前行 -
yy
復(fù)制當(dāng)前行 -
p
粘貼到當(dāng)前行的下方 -
P
粘貼到當(dāng)前行的上方 -
~
大小寫反轉(zhuǎn)
撤銷和恢復(fù)撤銷
-
u
撤銷上一步操作 -
<C-r>
恢復(fù)上一步操作
縮進(jìn)
-
>
增加縮進(jìn) -
<
減少縮進(jìn) -
=
自動(dòng)縮進(jìn)
可視模式
Vim的可視模式類似于其他編輯器按住鼠標(biāo)拖動(dòng)選擇區(qū)域溯祸,卻又有些許不同肢专,在可視模式下可以使用普通模式的命令來(lái)操作。
激活可視模式
-
v
激活面向字符的可視模式 -
V
激活面向行的可視模式 -
<C-v>
激活面向列的可視模式 -
gv
重選上次的高亮區(qū)域
切換可視模式
-
o
在可視模式下可以切換選取的活動(dòng)端
命令模式
在命令模式下我們可以為Vim開辟一塊新天地焦辅。命令模式下博杖,可以使用復(fù)雜的命令。在編輯模式下鍵入:
筷登,光標(biāo)就跳到屏幕最后一行剃根,并在那里顯示冒號(hào),此時(shí)已進(jìn)入命令模式前方。這篇文章不過(guò)多介紹命令模式狈醉。
打開、保存和退出
-
:e test.txt
在打開的vim中打開test.txt文件 -
:w
保存當(dāng)前文件 -
:q
退出當(dāng)前文件 -
:w test2.txt
另存文件為test2.txt(原文件依然存在) -
:qall
退出多個(gè)文件 -
:q!
強(qiáng)制退出當(dāng)前文件(所做的修改將不會(huì)保存) -
:wq
保存并退出當(dāng)前文件
分屏
-
:sp(lit)
上下分屏 -
:vsp(lit)
左右分屏 -
<C-w>
+hjkl
在不同屏之間切換
標(biāo)簽頁(yè)
-
:tabnew
新建標(biāo)簽頁(yè) -
:tabnew filename
在新標(biāo)簽頁(yè)中打開文件 -
:tabn(ext)
跳到下一個(gè)標(biāo)簽頁(yè) -
:tabN(ext)
跳到上一個(gè)標(biāo)簽頁(yè) -
:tabfir(st)
跳到第一個(gè)標(biāo)簽頁(yè) -
:tabl(ast)
跳到最后一個(gè)標(biāo)簽頁(yè) -
:tabo(nly)
關(guān)閉除當(dāng)前標(biāo)簽頁(yè)以外的其他標(biāo)簽頁(yè)
芳草有情皆礙馬惠险,好云無(wú)處不遮樓苗傅。編輯器加IDE成百上千,沒有孰好孰壞班巩,只要是對(duì)的便是最好的渣慕。學(xué)問(wèn),重在內(nèi)功修煉趣竣。