(一)基本的方向指令
h : 向左移動一列
l : 向右移動一列
j : 向下移動一個實際行
k : 向上移動一個實際行
所謂列可能指一個字節(jié),也可能是一個字符寄狼,根據(jù)文件內(nèi)容決定氨淌。
實際行指的是文本截止到一個換行符為止稱為一個實際行盛正。有時因為文本太長,一個實際行在窗口中會顯示成好幾行痰滋∪姥粒可以通過 ':set number' 命令查看實際的行數(shù)。
(二)基于單詞的移動
Vim有一組基于單詞的正向和反向移動的命令聪富。
w : 正向移動到下一單詞的開頭
e : 正向移動到當(dāng)前/下一單詞的結(jié)尾
b : 反向移動到當(dāng)前/上一單詞的開頭
ge : 反向移動到上一單詞的結(jié)尾
基于單詞的移動命令可以和其他命令結(jié)合使用著蟹。例如 ':ea' 可以跳轉(zhuǎn)到單詞的結(jié)尾并進(jìn)入插入模式萧豆。
(三)基于查找的移動
'f' 命令是最常用的查找命令,用于當(dāng)前行進(jìn)行指定字符的查找阵面。如果找到則光標(biāo)移動到目標(biāo)字符,否則不移動仑扑。
Vim會記錄上一次執(zhí)行的查找命令置鼻,再次查找時可以使用 ';' 命令來完成相同查找。如果查詢跳過頭了储藐,可以使用 ',' 命令返回光標(biāo)之前的位置嘶是。
查詢不止 'f' 命令俊啼,其他命令總結(jié)如下
f{char} : 正向移動到下一個{char}所在位置
F{char} : 反向移動到上一個{char}所在位置
t{char} : 正向移動到下一個{char}的前一個字符上
T{char} : 反向移動到上一個{char}的后一個字符上
除了上述查詢方式, '/' 也是一種常用的查詢方式同木,基于字符串的查詢跛十,'/{str}' 可以高亮目標(biāo)字符串芥映。可以通過 'n' 命令跳到下一個匹配處坞嘀, 'N' 返回前一匹配處惊来。
同樣的, '/' 也可以和其他命令結(jié)合使用矢渊,例如選擇文本枉证。點擊 'v' 進(jìn)入可視模式室谚,然后輸入 '/{str}'
也有例如 'd/{str}' 刪除光標(biāo)到目標(biāo)字符串之間的所有內(nèi)容的操作方式。
(四)精確的文本對象選擇
這個是一個很NB的功能管削,完全顛覆了對文本編輯器的認(rèn)知撑螺。
現(xiàn)在有一個js文件崎弃,內(nèi)容如圖:
這里認(rèn)識 'a' 和 'i' 兩個命令饲做,不是普通的插入命令,需要和 'v' 命令配合使用塞弊,選中匹配的文本對象游沿。例如在當(dāng)前光標(biāo)所在處輸入 'vi}' 會達(dá)到以下效果肮砾。
如果光標(biāo)的位置在href上呢?相同命令下:
如果換做是 'a' 命令呢?
'i' 命令可以理解為 inside吃环,即選中匹配符號之間不包含匹配符號的內(nèi)容洋幻。而 'a' 則選中包含匹配項的內(nèi)容。
常見分隔符總結(jié):
'a)' 或 'ab' : 一對()
'a}' 或 'aB' : 一對{}
a] : 一對[]
a> : 一對<>
a' : 一對''
a" : 一對""
a` : 一對``
at : 一對xml標(biāo)簽
'i' 與 'a' 對應(yīng)范咨,只不過是針對分隔符內(nèi)部的內(nèi)容而已渠啊。
(五)刪除周邊权旷、修改內(nèi)部
Vim除了可以根據(jù)分隔符操作贯溅,也可以操作文本塊它浅,如單詞镣煮,句子,段落等镊折。
常見文本范圍:
iw : 當(dāng)前單詞
aw : 當(dāng)前單詞及一個空格
iW : 當(dāng)前字符串
aW : 當(dāng)前字符串及一個空格
is : 當(dāng)前句子
as : 當(dāng)前句子及一個空格
ip : 當(dāng)前段落
ap : 當(dāng)前段落及一個空行
上面的范圍命令可以和 'v' 介衔、 'c' 等操作一起使用炎咖。
(六)快速回跳
這些命令用的相對少一些,常用一些的有
`` : 當(dāng)前文件上次跳轉(zhuǎn)操作的位置
`. : 上次修改操作的地方
`^ : 上次插入的地方
`[ : 上次修改或復(fù)制的起始位置
`] : 上次修改或復(fù)制的結(jié)束位置
`< : 上次高亮選區(qū)的起始位置
`> : 上次高亮選區(qū)的結(jié)束位置
(七)匹配括號間跳轉(zhuǎn)
Vim的 '%' 命令允許光標(biāo)在一對閉括號間跳轉(zhuǎn)升熊。例如當(dāng)前光標(biāo)在 '[' 上蹦肴, '%' 命令可以跳轉(zhuǎn)到對應(yīng)的 ']' 上,反過來也一樣ok阴幌。例如將一對 '{}' 修改為一對 '[]'矛双。
當(dāng)前光標(biāo)在 '{' 上议忽,輸入 '%' 命令
替換當(dāng)前光標(biāo)下的字符,通過 'r]' 將 '}' 替換為 ']'栈幸。輸入 '``' 命令,跳轉(zhuǎn)回上次跳轉(zhuǎn)的位置玩焰。
之后再通過 'r[' 將 '{' 轉(zhuǎn)為 '['芍锚。