tcshでオートコンプリートを実行すると、以前のパラメータを参照できますか?

tcshでオートコンプリートを実行すると、以前のパラメータを参照できますか?

ここでは効率的なオートコンプリート機能を実現しようとしていますが、いくつかの問題が発生しました。

同時に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)の完成を参照)。

!!失敗した場合、または同じ履歴拡張を試してみることができますが、!#$これが可能かどうかはわかりません。

おすすめ記事