1. ホーム
  2. vim

vimdiffで空白をすべて無視するように設定する方法はありますか?

2023-10-21 19:23:20

質問

私は vim -d file1 file2 を使って、それらの間の違いを見ています。これはうまくいきますが、私は空白の変更を無視したいのです - ソース コード ファイルには無関係です。

Vim のヘルプには、次のコマンドが魔法をかけると書かれています。

set diffopt+=iwhite

しかし、残念ながら、このコマンドは -b を追加するだけで、末尾の空白文字は無視されます。diff の正しいコマンドラインキーは -w とすれば、すべての空白文字の変更を無視できます。しかし、Vimから直接diffのコマンドラインを変更する方法が見つかりません。もちろん、カスタムdiffをコンパイルしたり、diffをdiff.shで置き換えたりすることはできますが、それはちょっと不格好です :(.

ファイルの差分を表示するために、Vim が diff ツールとどのように相互作用するかを変更する良い方法はありますか?

どのように解決するのですか?

はい。 iwhite オプションを設定し、さらに diffexpr を空にします。

の該当部分から vim docs :

<ブロッククオート

アイホワイト

空白の量の変化を無視する。 追加される が空の場合、"-b" フラグを "diff" コマンドに追加します。 'diffexpr' が空の場合、"diff" コマンドにフラグを追加します。 ドキュメントを確認 これが何をするのかについては、"diff" コマンドのドキュメントを確認してください。 のドキュメントを参照してください。 これは、末尾の空白の追加を無視するはずです。 空白の追加は無視されますが、先頭の空白は無視されません。

を設定することで、独自の diff コマンドラインを指定できることにも注意してください。 diffexpr . に関する議論を参照してください。 vimdiff のマニュアルページ を、特に参照してください。

diffexpr' オプションは、2 つのファイルを比較し、その違いを見つけるために、標準の diff"プログラム以外のものを使用して、2 つのファイルを比較し、差分を見つけるように設定することができます。

diffexpr' が空の場合、Vim は以下のコマンドを使用して file1 と file2 の違いを見つけます。 を使用します。

diff file1 file2 > outfile