web-dev-qa-db-ja.com

コマンドのオプションのタブのオートコンプリート

タブのオートコンプリートは、オプションの「内部」コマンドでは機能しません。

たとえば、コマンドmousepadのヘルプファイルを考えてみます。

lucho@lucho-XPS15:~$ mousepad --help
Usage:
  mousepad [OPTION…] [FILES...]

Help Options:
  -h, --help               Show help options
  --help-all               Show all help options
  --help-gtk               Show GTK+ Options

Application Options:
  --disable-server         Do not register with the D-BUS session message bus
  -q, --quit               Quit a running Mousepad instance
  -v, --version            Print version information and exit
  --display=DISPLAY        X display to use

mousepad --disable」と入力してオートコンプリートを押しても何も起こりません。

これはなぜですか?この「拡張」タブのオートコンプリートを有効にする方法はありますか?

1
user308164

これはなぜですか?

通常、bash補完関数は引数を補完に含めません。

この「拡張」タブのオートコンプリートを有効にする方法はありますか?

これから &L投稿

一部のコマンドでは、bashは引数--helpを使用してコマンドを呼び出し、出力を解析します。このようなコマンドは、完全な組み込みで登録できます。 complete -F _longopt ls_longoptは、実際には完了生成関数であり、固定リストを使用するのではなく、コマンドの出力を解析します。 (コマンドの出力を解析して可能な補完を生成する、より専門的な補完関数が他にもあります。例については/etc/bash_completion.d/*を参照してください。)

そう:

$ complete -F _longopt mousepad
$ mousepad --
--disable-server  --display=        --help            --help-all        --help-gtk        --quit            --version
3
muru