gpt4 book ai didi

search - 如何在vim中使用awk进行搜索和替换?

转载 作者:行者123 更新时间:2023-12-03 00:57:52 28 4
gpt4 key购买 nike

我正在使用 Vim 中的 Ack 插件,它可以帮助我快速搜索项目中的字符串。但是,有时我想替换所有或部分找到的字符串。您可以使用 Vim arglist 进行某种全局搜索和替换,如下所示 ( source ):

:args app/views/*/*
:argdo %s/, :expire.*)/)/ge | update

但我不使用 args,而是更愿意通过 Ack 进行搜索,然后在找到的所有文件中进行替换。有没有一种类似于 argdo 命令的方法?

最佳答案

我决定使用 ackperl 在 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com