3

vim で 2 つのファイルを比較するとき (例: vim -d file1 file2)、すべての空白を無視したい。

この質問でAdam Katzのアドバイスに従うことで、これをほぼ達成しました: Is there a way to configure vimdiff to ignore ALL whitespaces?

そのアドバイスにより、diff コマンドは -w オプションを取得するようになり、結果に空白のみの違いがある行が含まれなくなります。

空白の違いと空白以外の違いの両方を含む行がある場合、これらは diff によって正しく返されます。しかし、vim は空白も違いとして強調表示します。

たとえば、比較対象の 2 行が次の場合:

File 1: a,b,c,d
File 2: a, b, c, e

次に、強調表示された差分はb, c, e、目的の代わりになりますe

強調表示プロセスで空白を無視するようにvimに指示する方法はありますか?

vim 7.3 (gvim) を使用しています。

4

2 に答える 2

2

diffは、文字や単語ではなく行を操作するため、無視する-b-w決定します。行が無視されない場合、これは空白以外の変更が含まれる場合に常に当てはまります (大文字と小文字を無視するか、正規表現に一致する行を明示的に無視しない限り)、常に次のような出力が出力されます。diff

1c1
< a,b,c,d
---
> a, b, c, e

変更diffoptまたは変更は、 diffexprVim が を呼び出す方法に影響するだけdiffであり、受信した diff を処理する方法には影響しません。どちら-b-w上記の diff を変更しないため、Vim は結果として同じ結果を表示します。したがって、あなたが探しているのは、Vim が受け取った差分を正確に強調表示する方法を変更する方法です。これは可能ではないと思います。

于 2013-08-01T22:07:03.587 に答える
0

ファイル 1 = f1、ファイル 2 = f2

別の一時ファイルの空白を削除するのはどうですか?

vim -c "s/\s//g" -c "wq! f2.tmp" f2

それから

vimdiff f1 f2.tmp
于 2013-08-01T23:37:46.697 に答える