vimdiff はファイルの代わりに出力を比較します。

vimdiff はファイルの代わりに出力を比較します。

2つのコマンド出力を比較したい(ファイルなし)。

vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)"

リダイレクト、パイプを使ってみましたが、vim - -c何か抜けたようです。誰でも助けることができますか?

答え1

あなたは$(…)について混乱しています<(…)。出力を次のように渡す電子を使用しました。議論到着するvimdiff。たとえば、最後の行にが/path/to/foo含まれている場合はbar bar bar、次のコマンドを実行します。

echo $(tail -1 /path/to/foo)

等しい

echo bar bar bar

代わりにこれを使用する必要があります<(…)プロセスの交換,次のように出力されます。ダミーファイルvimdiffコマンドに。したがって、以下をご利用ください。

vimdiff <(tail /tmp/cachain.pem) <(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)

bashこれはとで動作しますzshが、明らかに以下があります。絶対でプロセス交換を実行しますtcsh

答え2

存在するfishシェル、これpsub注文するプロセス置換を実行すると、次の例になります。

vimdiff (tail /tmp/cachain.pem | psub) (tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem | psub)

ところで、そのファイルの特定のGitバージョンでファイルを編集するのは、プロセス置換とvimdiff.definition(fish構文ではありますがPOSIXシェル構文に簡単に適応できる)と思います。

function vimgitdiff
    vimdiff $argv[1] (git show $argv[2]:$argv[1] | psub)
end

それから電話してください

vimgitdiff path/to/file branch-name

左の作業ツリーで現在の状態を開き、Vim右の作業ツリーで現在の状態を開きます。path/to/filebranch-name

関連情報