スクリプトでvimdiffを使用してファイルを比較する

スクリプトでvimdiffを使用してファイルを比較する

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"

おすすめ記事