如何在vim中搜索和替换ack?

我在Vim中使用Ack插件,这有助于我快速搜索项目中的字符串。但是,有时我想替换所有或一些出现的找到的字符串。你可以做一些类型的全局搜索和替换使用Vim arglist like this( source)
:args app/views/*/*
:argdo %s/,:expire.*)/)/ge | update

但是,不是使用args,我宁愿通过Ack进行搜索,然后在找到的所有文件中执行替换。有没有办法做类似于argdo命令?

我决定使用ack和Perl在Vim之外解决这个问题,所以我可以使用更强大的Perl正则表达式而不是GNU子集。你可以将它映射到vimrc中的关键笔划。
ack -l 'pattern' | xargs perl -pi -E 's/pattern/replacement/g'

说明

ack

ack一个真棒命令行工具,是混合的grep,查找和完整的Perl正则表达式(不只是GNU子集)。它以纯Perl编写,它的速度快,它具有匹配高亮,在Windows上工作,它比程序员比传统的命令行工具更友好。使用sudo apt-get install ack-grep在Ubuntu上安装它。

xargs

Xargs一个旧的unix命令行工具。它从标准输入读取项目,并执行指定的命令,后面是为标准输入读取的项目。因此,基本上由ack生成文件列表被附加到perl -pi -E的/ pattern / replacemnt / g’命令的末尾。

perl -pi

Perl是一种编程语言。 -p选项导致Perl在你的程序周围创建一个循环遍历文件名参数的循环。 -i选项导致Perl在适当位置编辑文件。您可以修改此选项以创建备份。 -E选项使Perl执行指定为程序的一行代码。在我们的例子中,程序只是一个Perl正则表达式替换。有关Perl命令行选项perldoc perlrun的更多信息。有关Perl的更多信息,请参阅http://www.perl.org/

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...