- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Vim 中的 Ack 插件,它可以帮助我快速搜索项目中的字符串。但是,有时我想替换所有或部分找到的字符串。您可以使用 Vim arglist 进行某种全局搜索和替换,如下所示 ( 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是一个很棒的命令行工具,它混合了 grep、find 和完整的 Perl 正则表达式(不仅仅是 GNU 子集)。它是用纯 Perl 编写的,速度很快,具有匹配突出显示功能,可以在 Windows 上运行,并且比传统的命令行工具对程序员更友好。使用 sudo apt-get install ack-grep
在 Ubuntu 上安装它。
xargs
xargs是一个古老的 Unix 命令行工具。它从标准输入读取项目并执行指定的命令,然后执行为标准输入读取的项目。因此基本上由 ack
生成的文件列表被附加到 perl -pi -E 's/pattern/replacement/g'
命令的末尾。
perl -pi -E
Perl 是一种编程语言。
-p
选项使 Perl 在程序周围创建一个循环,循环遍历文件名参数。
-i
选项使 Perl 就地编辑文件。您可以修改它来创建备份。
-E
选项使 Perl 执行指定为程序的一行代码。在我们的例子中,该程序只是 Perl 正则表达式替换。
有关 Perl 命令行选项的详细信息,请参阅 perldoc perlrun
。有关 Perl 的更多信息,请参阅 http://www.perl.org/ .
关于search - 如何在vim中使用awk进行搜索和替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792561/
我是一名优秀的程序员,十分优秀!