bash、zsh、Fishの完成ファイルを生成するツールがあります。私は通常zshを使用していますが、この完成ファイルをzshで操作することはできません。だから私はテストでfishをインストールし、fishの完成ファイルを作成しました。そして私は仕事に行くことができません。他のすべての完成はzshとFishでうまく機能するため、ツールが破損した完成ファイルを生成すると疑われます。完成ファイルで構文エラーを確認する方法はありますか?
ベストアンサー1
私の答えには、zsh(「新しい」完成システムの使用、つまり呼び出し後compinit
)とbashが含まれています。魚については参照NotTheDr01dsの答え。
完成ファイルに構文エラーがある場合、完成コードが読み込まれるとエラーメッセージが表示されます。 Bashでは、/etc/bash_completion
ロード時にこれが発生します。 zshでは、完成関数が最初に呼び出されたときにこれが発生します。しかし、通事論エラーはほとんど発生しません。ほとんどのエラーは構文エラーではなく、完成関数を呼び出す以外に有効であることを確認する方法はありません。
完了の生成中に実際のエラーが発生すると、端末にエラーメッセージが表示されます。ただし、コードがエラーをトリガーしないが必要な完了を生成しない場合、エラーは表示されません。
最初にチェックする必要があるのは、目的の完成関数が実際に呼び出されるかどうかです。 zshの場合は確認してください。
echo $_comps[foo]
foo
オプション/引数を完了するコマンドはどこにありますか? bashの場合は確認してください。
complete -p foo
カスタム補完機能がロードされない場合は、次を参照してください。カスタムコマンドの動的zshオートコンプリートまたはカスタムbashタブの完了。
完了コードをデバッグするには、zshで実行する代わりに^X?
()を押します。Ctrl+X ?Tab_complete_debug
。これにより、完成したコードのトレースがをタップして表示できるファイルに書き込まれますUp Enter。