質問: zshの$ pathキャッシュにオートコンプリートインデックス(またはそれが呼び出されたもの)とバイナリを再構築します 新しいソフトウェアをインストールした後、zshですでに開いている端末は新しいコマンドを認識せず、それらのオートコンプリートを生成できません。どうやら新しいターミナルを開くと問題が解決しますが、オートコンプリートが古いターミナルで機能するように、インデックス(またはそれを呼び出すもの)を再構築できますか?私はcompinitで試しましたが、それは役に立ちませんでした。また、シェルに依存しない方法はありますか?答えを確認する方法もあると便利です(何かをアンインストールして再インストールする場合を除く)。つまり、コマンド名のいくつかの文字を入力した後、 tab、そしてzshは残りの処理を行って完全な名前を取得します。
回答: 新しいコマンドで「引数の完了」が機能しない場合は、おそらくcompinitが必要なコマンドですが、キャッシュメカニズムが原因で問題が発生している可能性があります。私のバージョン(4.3.10)のドキュメントでは、compinitはキャッシュされた「ダンプファイル」_.zcompdumpを使用してコンパイル済みの完了関数を格納し、後続の呼び出しを高速化するとしています。完了ファイル(#compdef ...または#autoload ...で始まるfpath要素ファイル)の数の変化に気付いた場合にのみ、ダンプファイルを無効にします。おそらく新しいソフトウェアをインストールすると、そのような補完ファイルの数が変更される(その場所にzshオートコンプリートファイルもインストールされていると想定)ため、単純なcompinitを作業。それが機能しない状況にある場合は、ダンプファイルをバイパスするか手動で無効にする必要がある場合があります。ダンプファイルの使用をスキップするには、compinit -dを使用します。これは現在のシェルにのみ影響します。ダンプファイルを再構築するには、それを削除してcompinitを再実行します。rm -i ${zdotdir:-${home:?no zdotdir or home}}/.zcompdump && compinit これは、現在のシェル、プレーンcompinitを実行する既存のシェル、および将来のシェルに影響します。