現在のバッファとそのセーブファイルの間でdiffを実行しようとしています。私はdiff出力に対して何らかの処理をしたいので、新しいバッファではなく、変数にそれを必要とします。これを行う方法の1つは、diff出力を変数に渡す
w !diff % - > tmpfile
let myvar = system(cat tmpfile)
もう少しエレガントな方法がありますか?
現在のバッファとそのセーブファイルの間でdiffを実行しようとしています。私はdiff出力に対して何らかの処理をしたいので、新しいバッファではなく、変数にそれを必要とします。これを行う方法の1つは、diff出力を変数に渡す
w !diff % - > tmpfile
let myvar = system(cat tmpfile)
もう少しエレガントな方法がありますか?
あなたがバッファを書くことができますと仮定すると、あなたは、例えばへ
:let @a=system('diff ' . shellescape(expand('%')) . ' ' . shellescape(expand('%')) . '~')
ような何かを行うことができます〜buffer.txtとそうでないレジスタa
に結果を入れて、私の予備試験では
:let @a=""
:redir @A
:%w !diff - "%~"
:redir END
をしようとするbuffer.txt比較する、とはいえ、これはWin32のGVIM、上で動作しないように表示されます。この作業を行うには、一時ファイルを使用しなければならない場合があります。
私はこれがすべてあなたが試したことに近いと認識しています。とにかく、おそらくあなたの考えを確認するのに役立ちます。
サンプル 'vimrc'に':DiffOrig'コマンドが含まれています。それはあなたの質問に答えないので、私はコメントとして残しますが、これは関連しており、あなたに興味があるかもしれません。 – Benoit