在vim中的查找和替换
2019-08-15 本文已影响0人
Jerry_1116
1 查找
1.1 普通查找(字符串)
在normal模式下按下/
即可进入查找模式,输入要查找的字符串并按下回车。 vim会跳转到第一个匹配。
按下n
查找下一个,
按下N
查找上一个。
1.2 正则匹配查找
vim查找支持正则表达式。
例如:
- 行尾匹配
/vim$
匹配行尾的"vim"
。 - 查找特殊字符需要转义
需要查找特殊字符需要转义,例如/vim\$
匹配"vim$"
。
1.3 大小写敏感查找
1.3.1 通过查找模式中查找内容末尾添加指定标记
在查找模式中,
- 大小写不敏感查找
查找字符串末尾添加\c
- 大小写敏感查找
查找字符串末尾添\C
例如:
/foo\c
将会查找所有的"foo"
,"FOO"
,"Foo"
等字符串。
1.3.2 通过设置vim编辑器的默认配置
vim 默认采用大小写敏感的查找。我们常常将其配置为大小写不敏感。
在~/.vimrc
中添加如下内容:
- 设置默认进行大小写不敏感查找
set ignorecase
- 如果有一个大写字母,则切换到大小写敏感查找
set smartcase
保存之后,重新打开vim即可生效。
1.4 查找当前单词
在normal模式下按下*
即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。
例如,当前为foo
, 可以匹配foo bar
中的foo
,但不可匹配foobar
中的foo
。这在查找函数名、变量名时非常有用。
按下g*
即可查找光标所在单词的字符序列,每次出现前后字符无要求。 即foo bar
和foobar
中的foo
均可被匹配到。
2 查找与替换
:s
(substitute)命令用来查找和替换字符串。
语法如下:
:{作用范围}s/{目标}/{替换}/{替换标志}
例如,
:%s/foo/bar/g
会在全局范围(%
)查找foo
并替换为bar
,所有出现都会被替换(g
)
2.1 作用范围
作用范围分为当前行、全文、选区等等。
- 当前行
:s/foo/bar/g
- 全文
:%s/foo/bar/g
- 选区
在Visual模式下选择区域后输入:
,vim即可自动补全为:'<,'>
。
:'<,'>s/foo/bar/g
- 指定行范围
在2-11行范围内搜索
:5,12s/foo/bar/g
- 当前行
.
与接下来两行+2
:.,+2s/foo/bar/g
3 替换标志
上文中命令结尾的g
即是替换标志之一,表示全局global
替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:
- 空替换标志
空替换标志表示只替换从光标位置开始,目标的第一次出现。
:%s/foo/bar
- 大小写敏感标识
-
i
表示大小写不敏感查找 -
I
表示大小写敏感
-
:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%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
是光标移动快捷键。