概述
之前讨论了关于在vim中使用正则表达式的相关知识能方便的进行搜索,现在在之前的基础之上继续来讨论如何进行替换操作。
substitute 简介
substitute 允许我们先查找一段文本并用新的文本将匹配上的文本进行替换。它的使用比较复杂,需要提供一个匹配模式和一个替换的字符串。命令格式如下:
:[range]s[ubstitute]/{pattern}/{string}/{flag}
- range 表示范围,与之前介绍的其他 ex 命令中范围的作用一样。
- pattern 表示一个匹配模式,回忆一下之前说过的,这里的模式跟之前介绍的普通模式、插入模式的含义不同,它代表的是一串用来进行匹配并高亮显示的字符串。
- string是一串用来进行替换的字符串,将匹配项都替换成某项。
- flag是一些替换的标志,我们将在后面的内容中进行介绍。
例如 :%s/python/Python/g
表示在整个文件中将 python都替换为 Python
(这么长时间没怎么提到 ex 命令了,不知道各位小伙伴是否还记得 %
代表当前打开的文件)。g
是一个标志位,表示修改整行中的所有匹配项,而不仅仅是修改第一个匹配项。
标志位
上面的例子中我们使用了一个 g
作为标志位,其实还有其他的标志位。我们可以通过标志位灵活的定义 substitute
的行为。下面是一些常用的标志位:
r
:插入一个换行符t
:插入一个制表符\
:插入一个反斜杠1
:插入第一个子匹配项2
:插入第二个子匹配项