2

複数のファイルにわたって、次の種類の置換を多数実行したいと考えています。

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

Vimのみを使用して、Sedなしでそれを行いたいです。ただし、これを行うと、常に誤ってバッファーをスペースのようなものに置き換えるため、多くのキーが無駄になります。どうすれば速くできますか?

最小量のキーが勝ちます!

Vim 内で開始: 一致するものをバッファーに取得する

:grep -r "includegraphics" Sections/*
4

2 に答える 2

3

Vimを使用してファイルのグループでいくつかのアクションを実行する柔軟な方法は、名前のリストを引数リストに収集し(を参照 :help arglist)、目的のコマンドを実行してそれを繰り返すことです。

最初のステップを実行するには、コマンド、、、およびを使用:args:argaddます :argdelete。たとえば、引数リストを.tex現在のディレクトリとそのサブディレクトリに拡張子を持つすべてのファイルの名前に設定するには、次のコマンドを実行します。

:args ./**/*.tex

2番目のステップを実行するには、次の: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 に答える