跳到主要内容

Vim 高级操作

这里只是列举了常用的部分,更多操作需在实践中练习。

概念

1. 数量参数

在操作前输入一个数字 n,会重复该操作 n 次。

比如 5l,相当于按了 5 次 l,可右移 4 个字符。

2. Vim 命令模式

命令 文本对象

比如命令可以是 c d y,文本对象可以是 w 2b 等。

3. 重复命令

. 重复执行相同的命令

4. 撤销命令

u 撤销执行刚才的命令

更多移动

1. 行内移动

0 移动到行首

$ 移动到行尾最后一个字符前

移动到行尾时,如果设置了软换行 wrapmargin(如::set wm=10),则移动到逻辑行行尾,而不是屏幕行的行尾。

2. 文本块移动

G 移动到特定行

还可以按单词、句子、段落、节(section)来移动

w 前移一个词(字母数字以外的字符分割)

W 前移一个词(空格分割)

b 移动到行首(字母数字以外的字符分割)

B 移动到行首(空格分割)

e 移动到单词结尾(字母数字以外的字符分割)

E 移动到单词结尾(空格分割)

( 移动到句首

) 移动到下句首

{ 移动到段首

} 移动到下段首

[[ 移动到节首

]] 移动到下节首

3. 屏幕滚动

CTRL-F 向前滚屏

CTRL-B 向后滚屏

CTRL-D 向前滚半屏

CTRL-U 向后滚半屏

z ENTER 屏幕居中

更多编辑

1. 两种进入编辑模式的方式

i 以 insert 方式进入编辑模式,光标在当前字符前

a 以 append 方式进入编辑模式,光标在当前字符后

2. 修改文本

c0 修改光标到行首

c$ 修改光标到行尾

cw 修改光标到单词结尾

c2b 修改光标到后两个单词

cc 修改整行

3. 删除文本

d0 删除光标到行首

d$ 删除光标到行尾

dw 删除光标到单词结尾

dW 删除光标到单词结尾,含空格

d2b 删除光标到后两个单词

dd 删除本行

3dd 删除三行

4. 放置文本

可理解为粘贴。

删除寄存器:删除的文本对象进入了删除寄存器

p 从删除寄存器获取最后删除的对象,放置在光标处

y 复制文本

5. 合并行

J 合并两行。可以按 . 反复操作。

6. 搜索和替换

1. 搜索文本

/ 向前重复搜索

? 向后重复搜索

n 相同方向重复搜索

N 相反方向重复搜索

2. 替换文本

:s/old/new/ 替换 old 为 new,/ 是分隔符

:s/old/new/g 全局替换 old 为 new,g 是替换模式