学习记录: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