ここでは効率的なオートコンプリート機能を実現しようとしていますが、いくつかの問題が発生しました。
同時に2つを設定するコマンドがあります。最初のリストは比較的小さいが、最初のリストでフィルタリングしないと、2番目のリストは管理できないほど大きくなります。
私がやりたいことは、最初のパラメータがすでに入力されているか、オートコンプリートされた内容を2番目のオートコンプリートコマンドに渡すことです。
complete job 'p/1/`listJobs`/' 'p/2/`listTasks`/'
私がやりたいことは、最初の引数として入力された操作を "listTasks"コマンドに渡すことです。
どうすればいいのかご存知ですか?
乾杯
(これは誰も答えていない私の古いSuperUser.comの質問を投稿しました...スーパーユーザーの質問は見つけることができますここ)
答え1
これが私が見つけることができる最良の選択です:
complete job 'p/1/`listJobs`/' \
'p/2/`set cmd = ( $COMMAND_LINE ); listTasks $cmd[$#cmd]`/'
私のUbuntuシステムで使用できるという変数に依存しています$COMMAND_LINE
が、これが標準であるかどうかはわかりません。
バージョンで呼び出されたコマンドは、
...
名前が示すように、現在(入力された)コマンドラインの内容を含むCOMMAND_LINEという追加の環境変数を設定します。カスタムスクリプト内のCOMMAND_LINE変数の内容を調べ、より複雑な完成を構築するために使用できます(このパッケージに含まれるsvn(1)の完成を参照)。
!!
失敗した場合、または同じ履歴拡張を試してみることができますが、!#$
これが可能かどうかはわかりません。