vim - 如何在 Vim 中高效地跨多个文件执行替换命令?

标签 vim substitution

我想在多个文件中执行以下类型的多次替换:

"\includegraphics{all.png}" → "\includegraphics[width=\linewidth]{all.png}"

我想在不使用 Sed 的情况下仅使用 Vim 来完成此操作。然而,当我这样做时,我总是不小心用空间之类的东西替换了缓冲区,所以浪费了很多键。我怎样才能快速完成?

最少数量的 key 获胜!

在 Vim 内部开始:将匹配项获取到缓冲区

:grep -r "includegraphics" Sections/*

最佳答案

使用以下方式在一组文件中执行某些操作的灵活方法 Vim 是将他们的名字列表收集到参数列表中(参见 :help arglist),然后迭代它执行所需的 命令。

为了执行第一步,请使用命令 :args:argadd:argdelete。例如,将参数列表设置为以下名称 当前目录中具有 .tex 扩展名的所有文件以及 其子目录,运行:

:args ./**/*.tex

要执行第二步,请使用 :argdo 命令:

:argdo %s/\\includegraphics\zs\ze{all.png}/[width=\\linewidth]/g

关于vim - 如何在 Vim 中高效地跨多个文件执行替换命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503347/

相关文章:

vim - 如何将光标定位在函数的圆括号内(Vim编辑器)?

c# - 使用Vim作为C#编辑器,面临一些问题

ruby - 在 Ruby 中的索引位置替换字符

vim - 在 Vim 中自动缩进 Haskell

regex - 删除不只包含字符的行

search - 如何在vim搜索和vim替代之间共享searchText?

algorithm - 使用迭代替换查找多次重复的运行时间

linux - PHP 文件中的 ^M

bash - 没有扩展的 shell 脚本的 ctags

Bash eval 替换 $() 并不总是等价的?