vimdiff
両方のディレクトリを再帰的に比較し、違いが見つかったら実行するスクリプトを作成しています。
#!/bin/bash
dir1=${1%/}
dir2=${2%/}
find "$dir1/" -type f -not -path "$dir1/.git/*" | while IFS= read line; do
file1="$line"
file2=${line/$dir1/$dir2}
isdiff=$(diff -q "$file1" "$file2")
if [ -n "$isdiff" ]; then
vimdiff "$file1" "$file2"
fi
done
vimは「入力が端末から来ていません」という警告を表示するため、機能しません。-
引数を提供する必要があるのは少し面倒ですが、ある程度作業しています。
#!/bin/bash
dir1=${1%/}
dir2=${2%/}
find "$dir1/" -type f -not -path "$dir1/.git/*" | while IFS= read line; do
file1="$line"
file2=${line/$dir1/$dir2}
isdiff=$(diff -q "$file1" "$file2")
if [ -n "$isdiff" ]; then
cat "$file1" | vim - -c ":vnew $file2 | windo diffthis"
fi
done
問題は、diffウィンドウの右側に新しいファイルがあることです。 dir1のソースファイルとdir2のソースファイルを比較したいです。どうすればいいですか?
ベストアンサー1
vim
だからvimdiff
推測したようだ。標準入力は端末。スクリプトで次の操作を行うことで、この問題を解決できます。
</dev/tty vimdiff "$file1" "$file2"