Vimで2つの垂直方向に開いたウィンドウの差分を取る


102

2つのファイルを開いています。それらは次の縦モードで開かれます。Vimを終了したり閉じたりせずに、これら2つのファイルを即座に比較できますか?

回答:


154

表示されているすべてのウィンドウで比較を開始するには:

:windo diffthis

:diffthis各ウィンドウで実行されます。

差分モードを終了するには:

:diffoff!

!作るにはdiffoff-あれば、それは素晴らしいことだ、現在のタブのすべてのウィンドウに適用されるdiffthis同じ機能を持っていたが、それはしていません。)


:windoコマンドは、それがさらに良くなります。ありがとう。簡単にするためにマップします。
Fatih Arslan、2010

1
これは良い答えですが、minibufexplorerウィンドウを開く場合は、この操作の前に閉じる必要があることに注意してください。そうでない場合、diffは誤った結果を示します。
はげ頭14

エイリアスを使用できます:windo difft[this]。参照::help diff
DmitrySandalov 2015

@FatihArslan、:windo diffthisは私の場合何もしませんが、行番号の隣の左側の灰色の列をそのままにします。2つの異なるVimファイルを開いています。
earik87

22

タイプを比較したい各ウィンドウで:

:diffthis

開いているすべてのウィンドウを比較したい場合は、次のようにします。

:windo diffthis

windo開いているすべてのウィンドウにコマンドを適用します)


6

以前の回答に続き、

  • :windo difft(の短縮形diffthis)は、開いているすべてのウィンドウでdiffモードを開始します。
  • :windo diffo(の略diffoff)は、開いているすべてのウィンドウでdiffモードを停止します。

vimrc簡単にするために、次のマッピングがあります。

command! Difft windo diffthis
command! Diffo windo diffoff

3

以前の回答に続いて、@ cxwによって提供されるマッピングを調整しました。次のマッピングは、自動的にNERDTreeを閉じ、開いているウィンドウを比較します。NERDTreeが閉じているかどうかは関係ありません。同じように動作します。私はこれを頻繁に行うので、かなりの時間を節約できました。

command! Difft NERDTreeClose | windo diffthis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.