4

私のプロジェクト回帰設定では、出力ファイルには次のようなステートメントがあります

    "diff between foo.txt and bar.txt found" 

次に、foo.txtとbar.txtの間でvimdiffを使用する必要があります。vimでのみ開いた出力ファイルからそれを行うことはできますか?

現在、vimで出力ファイルを最初に開く必要があります。次に、見つかった差分を指定する行を選択する必要があります。シェルに戻った後。次に、このファイルのvimdiffを取得します。

4

2 に答える 2

2

次の関数を使用して、新しい vim インスタンスを開かずに実行できます。

function s:OpenDiff()
    let line=getline('.')
    let match=matchlist(line, '\v^\ {4}\"diff\ between\ (.{-})\ and\ (.{-})\ found\"\ $')[1:2]
    if empty(match)
        throw 'Incorrect line:' line
    endif
    execute 'tabedit'   fnameescape(match[0])
    execute 'diffsplit' fnameescape(match[1])
endfunction
nnoremap ,od :<C-u>call <SID>OpenDiff()<CR>

set bufhidden=wipe各ステートメントの後に追加するexecuteと、 を実行して開いているバッファを取り除くことができます:tabclose

于 2011-10-13T04:25:05.797 に答える
1

ファイルが開かれていないか、バッファが変更されていない場合:

 :edit file1.txt
 :vert diffsplit file2.txt

新しいタブで差分を開くには、

 :tabedit file1.txt
 :vert diffsplit file2.txt

とても便利だろう


物事を自動化するために、私は考えます

diffprogram | grep -w '^diff between' | grep 'found$' | 
while read diff between file1 and file2 found;
do
    gvim -d "$file1" "$file2"
done

ノート:

  • 特殊文字 (特に空白) を含むファイル名では機能しません
  • これらすべての vim を同時に開くには、以下を追加し&ます。gvim -d "$file1" "$file2"&

単一の vim ですべての差分を別のタブで開くこともできます。

    gvim --servername GVIM --remote-silent +"tabedit $file1" +"vert diffsplit $file2"
于 2011-10-14T13:58:37.247 に答える