web-dev-qa-db-ja.com

ZSHオートコンプリートは、しばらくするとランダムに見えるエラーを出します

私のzshオートコンプリートは奇妙な方法で壊れています。クリーンログインの場合はすべて機能しますが、しばらくすると、さまざまな「種類」のオートコンプリートに対して、一見ランダムなオートコンプリートエラーが発生します。 ls foo<tab>は機能する場合がありますが、rm foo<tab>は機能しません。私はこれをデバッグする方法に完全に迷っています。

特定のコマンドのパターンが見つかりませんでした。また、どの完了が機能し、何が機能しないかについてのパターンもわかりませんでした。私のルーチンでは、gnuモジュールを使用し、make、コンパイラ、nanoなどを実行します。

オートコンプリート時に発生するエラーは次のようになります。

/bin/zsh:4: _main_complete: function definition file not found

または

(eval):1: _autocd: function definition file not found
(eval):1: _autocd: function definition file not found
(eval):1: _autocd: function definition file not found
_main_complete:173: _ignored: function definition file not found
_main_complete:173: _ignored: function definition file not found
_main_complete:173: _ignored: function definition file not found

または

(eval):1: _rm: function definition file not found
(eval):1: _rm: function definition file not found
(eval):1: _rm: function definition file not found

_Sudoと_moduleについても同様のメッセージが表示されます。

ホームファイルシステムがnfs上にあるマシンの複数の画面セッションで、oh-my-zshとともにzsh(5.0.2)を使用しています。ログインするたびに、screen -xrR.zprofileを使用して画面セッションに自動的に接続します。

ログインするたびに、2つのファイル$ HOME /.zcompdumpと$ HOME/.zompdump -hostname- 5.0.2が作成されます。それらを削除しても違いはありませんでした。

4
Zulan

これは、変数FPATHまたはfpathを破壊するコードを実行した結果である可能性があります。これらの変数のいずれかの値を確認してください。 zshが関数をロードするディレクトリのリストである必要があります。

変数FPATHfpathは結びついています(PATHpathのように):一方を変更すると、もう一方に影響します。大文字のFPATHは、コロンで区切られたディレクトリのリストを含む文字列です。小文字のfpathはディレクトリの配列です。

これらの名前のいずれかを変数として使用する可能性のある場所がないか、起動スクリプトを確認してください。 zsh(man zshparam)による変数名のリスト set または sed を確認し、別の目的で使用しないようにしてください。

完了関数は自動ロードされます。つまり、最初に使用されたときにロードされます。たとえば、シェルインスタンスで完了を完了すると、_main_complete: function definition file not foundは表示されなくなります— _main_completeは機能するが、このメッセージの処理を停止すると、何か奇妙なことが起こっています。