2

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

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

我想在没有 Sed 的情况下只使用 Vim 来做到这一点。但是,当我这样做时,我总是不小心用空间之类的东西替换缓冲区,从而浪费了很多键。我怎样才能快速完成?

最少的钥匙获胜!

从 Vim 内部开始:获取缓冲区的匹配项

:grep -r "includegraphics" Sections/*
4

2 回答 2

3

使用 Vim 在一组文件中执行某些操作的一种灵活方法是将它们的名称列表收集到参数列表中(请参阅 :help arglist参考资料),然后遍历它执行所需的命令。

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

:args ./**/*.tex

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

:argdo %s/\\includegraphics\zs\ze{all.png}/[width=\\linewidth]/g
于 2012-11-21T23:51:21.493 回答
2

替换所有缓冲区

:bufdo %s/\\includegraphics\{all\.png\}/\includegraphics[width=\linewidth]{all.png}/ge

于 2012-11-21T22:54:30.117 回答