3

WinXP で gVim を実行しています。

フォルダーを開き、2 つのファイルを選択して、"Diff with Vim" をクリックします。スクリーンショット:

Vimdiff の問題

gVim GUI が起動し、各ファイルが独自のタブに表示されます。各タブが DIFF モードになっていることに気付きました。ただし、2 つのタブ間で行われる比較はありません。両方のファイルは完全に異なりますが、強調表示も何もありません。左側に灰色の線があるだけで、これは「DIFF」モードであると解釈されます。

差分の結果

何が起こっている?私のvimdiffが機能していませんか、それとも何か他のものですか?


私の解決策

以前、Windows コンテキスト メニューを使用して複数のタブでファイルを開く必要があったとき、投稿者のアドバイスに従い、次の行を.vimrcファイルに追加しました。:autocmd BufReadPost * tab ball

これにより、1 つの Vim ウィンドウの別々のタブで 2 つのファイルを開くことができましたが、必要に応じて 2 つのファイルを比較する機能が失われました。これらの両方の機能をオンにする解決策は、2 つのファイルを比較autocmdしたくない場合にのみ上記を有効にすることです。したがって、.vimrcファイルのコードを以下のように変更すると、Vim機能を使用した Diff が回復しました。&diff==0

if (&diff==0)
    :autocmd BufReadPost * tab ball
endif

上記のVim Wikia リンクのコメント部分にもこのソリューションを追加しました。

4

2 に答える 2

2

gvim私は Windows を実行しておらず、Linuxでも使用していないため、これはせいぜいヒントです。オプション-pが に指定されている場合、vimdiffその引数が別のタブで開きます。差分は同じタブ内のウィンドウ間でのみ行われるため、これにより事実上差分が無効になります。 を呼び出すだけ-pなので、まだ利用できます。は、各引数を個別のタブに配置するようvimに指示します。vim を通常起動する場合に非常に便利です。そのため、常にこれを行うようにvimを構成している可能性があります。vimdiffvim -d ...-p

そのオプションが実際に何をするかを調べ、Diff with Vimそれを追跡して、コールチェーンに沿ったバッチファイル(または最近ではそれらが呼ばれるもの..)-pがvimの通常の呼び出しにオプションを追加しているかどうかを確認します。IIRC Windows エクスプローラーからこれを行うことができます。表示メニューには、すべてのファイルタイプを表示するオプションがあると思います。これらのファイルタイプを「開く」ように構成されたアプリケーションを表示および編集できます。

于 2011-04-05T21:56:25.350 に答える
2

私が間違っていなければ、gvim はストック _vimrc ( :e +/Diff $MYVIMRC)でカスタム VimDiff() 関数を定義します。

あなたはそれが動作するかどうかを確認したいかもしれません

 :call VimDiff()

at.m.で便利なWindowsマシンを持っていないので、実際の関数名とパラメーター(ある場合)を確認する必要があります。

于 2011-04-05T22:20:27.753 に答える