命令的性質(zhì)
單鍵命令按性質(zhì)分因苹,可以分為操作和移動(dòng)兩種。還涉及到一個(gè)叫文本對(duì)象的概念篇恒。
-
操作扶檐,如:
-
v
選擇 -
d
刪除 -
c
修改 -
y
復(fù)制 -
g~
切換大小寫 -
=
格式化縮進(jìn) -
>
添加縮進(jìn) -
<
減少縮進(jìn) -
p
粘貼到光標(biāo)右邊 -
P
粘貼到光標(biāo)左邊 -
i
在光標(biāo)左邊插入 -
a
在光標(biāo)右邊插入 -
I
在行首插入 -
A
在行尾插入 -
u
撤銷 -
Ctrl-r
撤銷撤銷
-
-
位置,或稱移動(dòng)胁艰,這些命令單獨(dú)使用的意思是「光標(biāo)移動(dòng)到某地方」款筑。
-
hjkl
左下上右 -
w
下一個(gè)單詞開頭 -
e
下一個(gè)單詞結(jié)尾 -
b
上一個(gè)單詞開頭 -
ge
上一個(gè)單詞結(jié)尾 -
gg
文件第一行行首 -
G
文件最后一行行首 -
fx
當(dāng)前行下一個(gè) x -
Fx
當(dāng)前行上一個(gè) x -
tx
當(dāng)前行下一個(gè) x 之前的字符 -
Tx
當(dāng)前行上一個(gè) x 之后的字符 -
^
行首 -
$
行尾 -
*
搜索下一個(gè)「光標(biāo)下的單詞」的第一個(gè)字母 -
#
搜索上一個(gè)「光標(biāo)下的單詞」的第一個(gè)字母 -
/x
搜索下一個(gè) x -
?x
搜索上一個(gè) x
-
-
范圍,或稱文本對(duì)象(text object)腾么,是一組表示范圍的命令奈梳,只能組合使用,單獨(dú)沒有意義解虱,關(guān)于如何組合會(huì)在下文說明攘须。
-
iw
,單詞殴泰,不包含單詞邊界 -
aw
于宙,單詞,包含單詞右邊的空格 -
i"
悍汛,兩個(gè)雙引號(hào)之間捞魁,不包含雙引號(hào) -
a"
,兩個(gè)雙引號(hào)之間离咐,包含雙引號(hào) -
it
谱俭,標(biāo)簽,不包含標(biāo)簽,標(biāo)簽指 html 或 xml 標(biāo)簽對(duì)兒 -
at
昆著,標(biāo)簽县貌,包含標(biāo)簽,標(biāo)簽指 html 或 xml 標(biāo)簽對(duì)兒 -
i(
或i)
或ib
宣吱,表示(
到)
之間窃这,不包含小括號(hào) -
a(
或a)
或ab
,表示(
到)
之間征候,包含小括號(hào) -
i<
或i>
,表示<
到>
之間祟敛,不包含尖括號(hào) -
a<
或a>
疤坝,表示<
和>
之間,包含尖括號(hào) -
i[
或i]
馆铁,表示[
到]
之間跑揉,不包含中括號(hào) -
a[
或a]
,表示[
到]
之間埠巨,包含中括號(hào) -
i{
或i}
历谍,表示{
到}
之間,不包含大括號(hào) -
a{
或a}
辣垒,表示{
和}
之間望侈,包含大括號(hào)
-
命令組合方式
上面列出了許多「操作」命令,他們可以被組合使用勋桶,但并不是所有的操作命令都能組合使用脱衙。判斷是否可以組合的方法是,鍵盤輸入如 d
的命令例驹,看他是否在等待下一個(gè)按鍵捐韩,是的話就可以按照下面的規(guī)則組合使用,否則就不行鹃锈。d
是可以組合使用的操作命令荤胁,假設(shè)我定義 d
是刪除一行,我輸入 d^
時(shí)屎债,vim 無法區(qū)分我想執(zhí)行「d
刪除一行之后再用 ^
把光標(biāo)移動(dòng)到行首」還是想執(zhí)行「d^
刪除到行首」仅政,所以單獨(dú)一個(gè) d
是沒有意義的,當(dāng)輸入 d
時(shí)扔茅,vim 會(huì)等待用戶按下一個(gè)按鍵已旧。不能組合的操作命令沒有這種歧義問題,所以他不會(huì)等待下一個(gè)按鍵召娜,比如 p
粘貼命令运褪。
-
操作 + 位置,意思是「進(jìn)行某操作,范圍是光標(biāo)到位置之間」秸讹。
-
dw
刪除到下一個(gè)單詞開頭 -
d^
刪除到行首 -
v#
選擇到上一個(gè)「光標(biāo)下的單詞」的第一個(gè)字母 -
vG
選擇到文件最后一行行首 -
=G
格式化到文件最后一行 -
g~$
切換大小寫到行尾
-
-
操作 + 范圍檀咙,意思是「對(duì)某范圍執(zhí)行某操作」。
-
diw
刪除單詞璃诀,不包含單詞邊界 -
yaw
復(fù)制單詞弧可,包含單詞右邊的空格 -
vit
選擇標(biāo)簽內(nèi)容,不包含標(biāo)簽劣欢,對(duì)于<p>asdfghjkl</p>
會(huì)選擇asdfghjkl
-
vat
選擇標(biāo)簽內(nèi)容棕诵,包含標(biāo)簽,對(duì)于<p>asdfghjkl</p>
會(huì)選擇<p>asdfghjkl</p>
-
=a{
格式化大括號(hào)之間的行縮進(jìn)凿将,包含大括號(hào)所在的行 -
gUiw
把單詞變成大寫
-
可以看出 vim 中如 w
的命令在不同組合下有不同的意思校套,單獨(dú)使用 w
代表光標(biāo)移動(dòng)到下個(gè)詞首,dw
代表刪除到下個(gè)詞首牧抵,daw
代表刪除這個(gè)單詞和多余的空格笛匙。雖然意思有些許不同,但 w
總是代表單詞犀变,這很直觀妹孙,不需要特別記憶,甚至不需要特別注意获枝,下意識(shí)就學(xué)會(huì)怎么用了蠢正。