我在Vim中使用ag
,搜索字符串/文件效果很好。
然而,似乎没有太多关于如何为ag构建模式的文档。
我正在尝试使用ag而不是vimgrep来自Practical Vim的一个例子。
我希望在递归中的目录中的所有文件中找到“Pragmatic Vim”的每一个匹配项,并将此字符串替换为“Practical Vim”。在某些文件中还有“实用书架”,并且该字符串必须保留。
这本书暗示了这种方法:
/Pragmatic\ze Vim
:vimgrep /<C-r>// **/*.txt
在该步骤之后,使用:Qargs
插件命令填充quickfix列表,最后:argdo %s//Practical/g
现在,如何使用/Pragmatic\ze
指定ag
模式?
ag
是否完全符合我在这里要做的事情?
答案 0 :(得分:23)
Silver Searcher工具使用PCRE(Perl兼容正则表达式)语法。因此,除了Vim \ze
之外,您还需要使用正向前瞻的Perl语法:(?=pattern)
。 (\zs
的相应 lookbehind 将为(?<=pattern)
。)
我在命令行上显示你的例子,但在Vim中应该是相同的:
$ ag 'Pragmatic(?= Vim)'