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-zsh
macOSコマンドalias diff='diff --color'
がdiff
これらのフラグをサポートしていないことです。これでこれを見ることができます/usr/bin/diff --help
。
したがって、カラーフラグは実際には最初のファイル名パラメータとして機能できます。
diff
回避策は、このフラグをサポートするGNUをインストールすることですcolor
。醸造:
brew install diffutils