1
2
# 取消高亮
:noh

取消搜索后高亮

1
2
3
4
# no high light search
:nohlsearch
# 简写
:noh

移动

1
2
w # 移至下一单词
b # 移至上一单词

剪切、复制、粘贴、删除

1
2
3
4
5
6
7
dd 	# 删除当前行
5dd # 删除5行

yy # 复制当前行
5yy # 复制5行

p # 粘贴

设置 tab 键长度

1
:set tabstop=4

开启自动缩进

1
2
:set autoindent
ctrl+d # 停止自动缩进

字符串替换

:s(substitute)命令用来查找和替换字符串。语法如下:

1
:{作用范围}s/{目标}/{替换}/{替换标志}

例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)。

作用范围

当前行:

1
:s/foo/bar/g

全文:

1
:%s/foo/bar/g

2-11行:

1
:5,12s/foo/bar/g

当前行.与接下来两行+2

1
:.,+2s/foo/bar/g

替换标志

上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现:

1
:%s/foo/bar

i表示大小写不敏感查找,I表示大小写敏感:

1
2
3
:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar

c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:

1
:%s/foo/bar/gc

回车后Vim会将光标移动到每一次"foo"出现的位置,并提示

1
replace with bar (y/n/a/q/l/^E/^Y)?

按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。^E^Y是光标移动快捷键