ホスト名をパラメータとして持つカスタムスクリプトがあります。既存の補完をzshの他のコマンドに "コピー"する方法
compdef myscript=ssh
しかし、これで1番目のパラメータの完成のみが可能になります。 すべてのパラメータの同じ完了を有効にする簡単な方法はありますか?
ホスト名をパラメータとして持つカスタムスクリプトがあります。既存の補完をzshの他のコマンドに "コピー"する方法
compdef myscript=ssh
しかし、これで1番目のパラメータの完成のみが可能になります。 すべてのパラメータの同じ完了を有効にする簡単な方法はありますか?
簡単なのカスタムコマンドの完了を有効にする方法がわかりません。あなたが許容引数bar
、bas
またはbaz
の束とコマンドfoo
を持っていると仮定すると、完了は簡単です:あなたはfoo bar
、foo bas
、またはfoo baz
を持つことができます。彼らがor
ではない場合でも、あなたは3つの組み合わせを持つことができます。
これは、(例えば、引数car
、cas
とcaz
を取ることができbar
)あなたは1以上の「深さ」を持っているとき、やや悪化します。
zsh
では、コマンドの補完については、completion functions
で詳しく説明しています。これらの関数はそれぞれアプリケーション固有のです。これは、各アプリケーションの引数がそれらのアプリケーション固有のものであるためです。一例として、tmux
(よく馴染みがない場合はscreen
に似たターミナルマルチプレクサ)は、完了機能がかなり複雑です(here's a link)。
独自の補完機能を記述したい場合は、ドキュメントが利用でき、アクセス可能です。ここには私が(ゆっくりと)自分のやり方で作業しているリンクがたくさんあります。彼らは完璧な仕組みをどうやって教えてくれるのでしょうが、読んだことはたくさんあります。 Zシェルは複雑な獣です。
あなたは、ホスト名のような引数の補完を可能にする上で特に興味を持っている、とあなたのアイデアとしてssh
を選び出しました。 ssh
のzsh
補完機能は、ZSHソースがある場合は、で定義されています。そうでない場合はlinkです
もちろん、this SO questionはかなり類似しています。 myscript
とssh
のパラメータが十分に一致する場合は、compdef
だけでも必要な処理を行うことができます。