2

特定のファイル、たとえばfile.txtで一連の「検索と置換」を実行したい。例えば、

s/foo/bar/g
s/abc/xyz/g
s/pqr/lmn/
g/string-delete/d 

等々。

これらすべてのアクションをスクリプト ファイルに記述し、ターゲット file.txt で一度に実行して newfile.txt に保存するにはどうすればよいですか?

この投稿を見ましたbash/sedを使用してファイル内の変数を検索して置換しますが、どういうわけかそれを機能させることができませんでした。

編集:私はvim / edベースのソリューションを好むでしょうThanx tempora

4

4 に答える 4

6

:source {file}vim スクリプトの実行に使用します。

コマンドをファイルに保存しますcommands.vim。次に、コマンドを適用するバッファを開き、次のcommands.vimようにファイルを読み込みます。

:so commands.vim

注::soの略です:source

詳細については、次を参照してください。

:h :so
于 2013-05-02T14:04:39.780 に答える
2

これらのコマンドをラップする関数を記述して、関数を呼び出すことができます。

注意!!

以下の関数は例です。cmd%の前に追加しましたs。「現在の」行ではなく、バッファ全体で置換を行いたいと思うからです。ただし、この方法では、後者のパターンが一致した場合、前に置き換えられた結果が後のコマンドによって再び置き換えられる可能性があることに注意する必要があります。必要に応じて調整してください。

たとえば、次のことを考えてください。

テキスト:fooc あなたが持っている%s/foo/ab/g%s/abc/def/g

fun! ExecThem()
    %s/foo/bar/g
    %s/abc/xyz/g
    %s/pqr/lmn/g
    g/string-delete/d
endf

関数をソースし、次に

:call ExecThem()

仕事をします。

もちろん、そのためのコマンドを作成できます。

command Mybatch call ExecThem()
于 2013-05-02T13:48:46.127 に答える
0

簡単で迅速な方法は、コマンドをレジスタにコピーし、 でレジスタをマクロ"ayとして実行することです。@a

于 2013-05-02T14:00:21.653 に答える