文本替换
底行模式下,命令格式 :
:[range] s/search/replace/[flags] [count]
参数表
参数 | 说明 |
---|---|
range | 是指定范围,也就是在哪些行里做替换。 |
flags | g 将所有出现的字符都替换成给定字符 p (print),要求打印所做的改动 c(confirm),要求在做出改动以前先询问 i(ignorecase),不区分大小写 可以将多个标记组合使用 |
示例
如果没有在命令中指定范围,那么将只会在当前行进行替换操作。以下命令将把当前行中的 I 替换为 We。命令中的 i 标记,用于指定区分大小写。
:s/I/We/gi
以下命令将文中所有的字符串 idiots 替换成 managers:
:1,$s/idiots/manages/g
通常我会使用 % 将整个文件做为替换范围:
:%s/search/replace/g
以下命令指定只在第5至第15行间进行替换:
:5,15s/dog/cat/g
以下命令在当前行在内的以下4行内进行替换:
:s/helo/hello/g4
以下命令在当前行至文件结尾间进行替换:
:.,$s/dog/cat/g
以下命令指定只在后续9行内进行替换:
:.,.+8s/dog/cat/g
如果希望精确替换某个单词,可以使用“<”来匹配单词的开头,并用“>”来匹配单词的结尾:
:s/\<term\>/replace/gc
如果想要将单词 Kang 和 Kodos 都替换为alien,那么可以使用 | 进行多项替换。
:%s/Kang\|Kodos/alien/gc