私は本業でUnity diffだけを扱うので、別名を定義したいと思います。
alias diff='diff -puN'
私の.zshrc
。
私はvimコマンドラインモードでシェルを使うとき、:!diff file1 file2
vimがインタラクティブシェルを呼び出さないからだと思います。
だからエイリアスをからに移しました。.zshrc
これにより、.zshenv
vim内で既存の一般的なUnityの違いを得ることができます(私は通常この出力を好むvimdiff
)。
一方、これは均一なvimdiff
違いを明確に解析しません(ただし、Error E97
説明help E97
や参照が私にとって役に立つとは思えませんshell
。diffexpr
vimdiff
同時に職場エイリアスをどのように使用する必要がありますか?diff
ベストアンサー1
コマンドの意味を変更すると、diff
Vimに大きなダメージを与える可能性があります(以下に説明します。:help diff-diffexpr
)"diff"の出力は通常の"ed"スタイルdiffでなければなりません。状況に応じた違いを使用しないでください。)およびその他の可能な手順。
同じ名前の純粋なシェルエイリアスは大丈夫です。これは、インタラクティブにコマンドを入力する場合(またはほとんど使用しないシェル関数でのみ)考慮されるためです。非対話型を使用するためにdiffコマンドを変更する必要がある場合(たとえば、Vimの:!
コマンドなど)、シェルラッパースクリプト/エクスポートされたシェル関数/エイリアスを以下で定義することをお勧めします。.zshenv
別の名前で、例えばdiffu
。
プログラムが破損するリスクにもかかわらず、同じエクスポートエイリアスを引き続き使用するには、Vimを再設定してそのエイリアスを使用しないようにする必要があります。残念ながら、diff実行可能ファイルには完全なカスタマイズを作成する必要がある簡単なオプションはありません'diffexpr'
。幸い、以下:help diff-diffexpr
に基本的な例をエミュレートする例があります。次のようにdiffエイリアスを避けるには、少し変更するだけです。diff の絶対パスを指定します。。
set diffexpr=MyDiff()
function MyDiff()
let opt = ""
if &diffopt =~ "icase"
let opt = opt . "-i "
endif
if &diffopt =~ "iwhite"
let opt = opt . "-b "
endif
silent execute "!/usr/bin/diff -a --binary " . opt . v:fname_in . " " . v:fname_new .
\ " > " . v:fname_out
endfunction