linux vi 编辑器技巧:重放搜索模式

技术百科 码拜 8年前 (2016-01-26) 1499次浏览 0个评论

当在文件中搜索要替换的模式时,可以让linux vi 编辑器把要匹配的任何模式保存在缓冲区中;然后,在执行替换时,可以用缓冲区引用号重放它们。方法是把模式放在 \(\) 之间,这会指示 vi 把模式放在编号的缓冲区(1 到 9)中。在执行替换时,可以用缓冲区引用号 \1\9 引用这些缓冲区。

例如,假设要在文件中搜索以单词 Martin 开头的行并对每个匹配添加前缀 Mr 和后缀 Wicks,那么进入命令模式,输入 vi 命令:%s/^\(Martin\)/Mr \1 Wicks/g,然后按回车。

重放搜索模式(之前)
Martin is an IT consultant. Martin likes
snowboarding and mountain biking. Martin has
worked on UNIX systems for over 15 years. Martin also
worked for many years before that on mainframes.
Martin lives in London.
~
~
~
~
:%s/^\(Martin\)/Mr \1 Wicks/g

下面把这个命令分解开解释一下:

  • :%s — 指示 vi 执行替换。
  • / — 模式分隔符。
  • ^\(Martin\) — 寻找以字符串 Martin 开头的行并把这个字符串保存在缓冲区 1 中。
  • / — 模式分隔符。
  • Mr \1 Wicks — 把找到的字符串替换为字符串 Mr,加上缓冲区 1 中的内容,再加上字符串 Wicks
  • / — 模式分隔符。
  • g — 全局修改(即修改所有匹配的地方)。

搜索和替换字符串中都可以使用缓冲区引用。

修改的结果:

重放搜索模式(之后)
Mr Martin Wicks is an IT consultant. Martin likes
snowboarding and mountain biking. Martin has
worked on UNIX systems for over 15 years. Martin also
worked for many years before that on mainframes.
Mr Martin Wicks lives in London.
~
~
~
~
:%s/^\(Martin\)/Mr \1 Wicks/g

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明linux vi 编辑器技巧:重放搜索模式
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!