在Vim中跨多个文件有效执行替换命令

问题描述 投票:1回答:2

我想要很多这样的改变

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

没有Sed,在Vim中。当我这样做时,我总是无意间用诸如空格之类的东西替换了缓冲区,这样浪费了很多键。我该如何快速完成?

最大的键数获胜!

从Vim内部开始:将匹配项放入缓冲区

:grep -r "includegraphics" Sections/*
vim substitution
2个回答
3
投票

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

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

:args ./**/*.tex

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

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

2
投票

替换所有缓冲区

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

© www.soinside.com 2019 - 2024. All rights reserved.