VimとUnityの違い

VimとUnityの違い

私は本業でUnity diffだけを扱うので、別名を定義したいと思います。

alias diff='diff -puN'

私の.zshrc

私はvimコマンドラインモードでシェルを使うとき、:!diff file1 file2vimがインタラクティブシェルを呼び出さないからだと思います。

だからエイリアスをからに移しました。.zshrcこれにより、.zshenvvim内で既存の一般的なUnityの違いを得ることができます(私は通常この出力を好むvimdiff)。

一方、これは均一なvimdiff違いを明確に解析しません(ただし、Error E97説明help E97や参照が私にとって役に立つとは思えませんshelldiffexpr

vimdiff同時に職場エイリアスをどのように使用する必要がありますか?diff

ベストアンサー1

コマンドの意味を変更すると、diffVimに大きなダメージを与える可能性があります(以下に説明します。: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

おすすめ記事