zsh / oh-my-zshでオートコンプリートdiffコマンドが機能しません。

zsh / oh-my-zshでオートコンプリートdiffコマンドが機能しません。

MacOSでは、私が知っている限り、いかなるカスタマイズもせずにoh-my-zshを使用しています。

オートコンプリートはほとんどの場合非常にうまく機能し、非常に満足しています。ただし、何らかの理由でdiff認知コマンドが異なります。

➜  ls file<TAB>
file1  file2
➜  diff file1 file<TAB>  # Rings bell and no completion
➜  diff file1 <TAB>  # Gives me a "-" completion
➜  diff file1 -<TAB>
-b  -- skip trailing white spaces
-c  -- output a context diff
-e  -- output an ed script
-f  -- output a reversed ed script
-r  -- recursively compare subdirectories

したがってdiff、diffは2番目の引数を2番目のファイルとして提供できることを認識せず、2番目にコマンドオプションのみを許可するようです。

何が起こっているのか、この問題を解決する方法についてのアイデアはありますか?

通常、特定のコマンドに対してスマート補完を完全に無効にするように設定する簡単な方法はありますか?私はcompdef _files diffこれをし、そのシェルでは動作しましたが、それ以降の新しいシェルでは動作しませんでした。

答え1

これはoh my zshのバグによって発生し、少し修正されました。2023年1月25日しかし、もう壊れています。2023年3月3日

コメントを追加しました。元の質問この回帰を強調し、ローカルで直接修正しようとしましたが、問題が発生しました。私のzshチームがこのバグを修正したら、この答えを更新します。

答え2

問題は、oh-my-zshmacOSコマンドalias diff='diff --color'diffこれらのフラグをサポートしていないことです。これでこれを見ることができます/usr/bin/diff --help

したがって、カラーフラグは実際には最初のファイル名パラメータとして機能できます。

diff回避策は、このフラグをサポートするGNUをインストールすることですcolor。醸造:

brew install diffutils

関連情報