学习记录:vim之替换操作substitute

vim替换指令:
利用:substitute命令,可以将指定的字符替换成其他字符。通常,我们会使用命令的缩写形式:s,格式如下:

:[range] s/search/replace/[flags] [count]

其中,range是指定范围,也就是在哪些行里做替换,当没有指出范围时,表示只在当前行进行操作。

替换操作涉及的几个常用的标记

%  整个文件

g   单行内所有匹配项

i   忽略大小写

c   确认是否替换

.   表示当前行

$   表示最后一行

举例:

从当前行至最后一行每一行第一个匹配到的old将被替换成new

:.,$s/\<old\>/new

整个文件每一行全部匹配到的old将被替换成new,注意:oldschool也会被替换成new

:%s/old/new/g

从第n1行到第n2行全部匹配到的old将被替换成new,注意:n1,n2表示行数

:n1,n2s/old/new/g         

光标所在行全部匹配到的old将会被替换成new且old忽略大小写,并询问是否进行替换

:s/old/new/gic

当询问是否替换时(replace with Teacher (y/n/a/q/l/^E/^Y)?),你可以回答:
y Yes:执行这个替换
n No:取消这个替换
a All:执行所有替换而不要再询问
q Quit:退出而不做任何改动
l Last:替换完当前匹配点后退出
CTRL-E 向上翻滚一行
CTRL-Y 向下翻滚一行

你还可以将特定字符做为替换范围。比如,将SQL语句从FROM至分号部分中的所有等号(=)替换为不等号(<>):
:/FROM/,/;/s/=/<>/g

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#old/#new/# 替换当前行第一个 old/ 为 new/

可视化模式下进行替换:

在可视化模式下,首先选择替换范围, 然后输入:进入命令模式,就可以利用s命令在选中的范围内进行文本替换。
多项替换

精确替换

在搜索sig时,也将匹配sig, signature, signing等多个单词。如果希望精确替换某个单词,可以使用“\<”来匹配单词的开头,并用“\>”来匹配单词的结尾:
:s/\<term\>/replace/gc

多项替换

如果想要将单词Kang和Kodos都替换为alien,那么可以使用|进行多项替换。
:%s/Kang\|Kodos/alien/gc

暂时遇到的情况就这些,以后在实际操作过程中遇到其他情况再补充。   z-god

猜你喜欢

转载自www.cnblogs.com/z-god/p/12358946.html