我在Vim中使用Ack插件,这有助于我快速搜索项目中的字符串。但是,有时我想替换所有或一些出现的找到的字符串。你可以做一些类型的全局搜索和替换使用Vim arglist like this(
source)
:
:
:args app/views/*/* :argdo %s/,:expire.*)/)/ge | update
我决定使用ack和Perl在Vim之外解决这个问题,所以我可以使用更强大的Perl正则表达式而不是GNU子集。你可以将它映射到vimrc中的关键笔划。
原文链接:/bash/390835.htmlack -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/。