前言
在日常编写代码的过程中,查找与替换的操作常常会用到。比如,方法内某个变量的名字需要重新命名、某些字符串内容需要更改等等。
虽然强大的 IDE 已经给我们提供了强大的 查找与替换 功能,但作为一个 Vim 重度使用者,可以用简洁的命令完成的事情,必须也安排上!
基本语法
:s
(substitute)命令用来查找和替换字符串。语法如下:
:{作用范围}s/{目标}/{替换}/{替换标志}
例如 :%s/foo/bar/g
会在全局范围(%
)查找 foo
并替换为 bar
,所有出现都会被替换(g
)。
作用范围
作用范围分为当前行、全文、选区等等。
1、当前行:
:s/foo/bar/g
2、全文:
:%s/foo/bar/g
3、选区,在 Visual 模式下选择区域后输入 :
,Vim 即可自动补全为 :'<,'>
。
:'<,'>s/foo/bar/g
4、某些行之间,如 2-11
行:
:2,11s/foo/bar/g
5、当前行 .
与接下来两行 +2
:
:.,+2s/foo/bar/g
替换标志符
上文中命令结尾的 g
即是替换标志之一,表示全局 global
替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:
空替换标志表示只替换从光标位置开始,目标的第一次出现:
:%s/foo/bar
i
表示大小写不敏感查找,I
表示大小写敏感:
:%s/foo/bar/i
– 等效于模式中的\c(不敏感)或\C(敏感),如下,可以匹配到Foo
\FoO
等:%s/foo\c/bar
c
表示需要确认,例如全局查找 "foo"
替换为 "bar"
并且需要确认:
:%s/foo/bar/gc
回车后 Vim 会将光标移动到每一次 “foo” 出现的位置,并提示
replace with bar (y/n/a/q/l/^E/^Y)?
按下 y
表示替换,n
表示不替换,a
表示替换所有,q
表示退出查找模式, l
表示替换当前位置并退出。^E
与 ^Y
是光标移动快捷键。
结尾
非常简单实用的命令!