命令选项的 Tab 自动完成

命令选项的 Tab 自动完成

Tab 自动完成功能在命令“内部”不起作用,也就是说,对于选项来说。

例如,考虑该命令的帮助文件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

为什么会这样呢?

因为 bash 完成函数通常不包含完成中的参数。

有没有办法可以启用这个“广泛的”选项卡自动完成功能?

由此U&L 帖子

对于某些命令,bash 将使用参数调用该命令 --help并解析输出。此类命令可以使用 complete 内置函数注册,例如complete -F _longopt ls_longopt实际上是一个完成生成函数,它恰好解析命令的输出而不是使用固定列表。(还有其他更专业的完成函数可以解析命令的输出以生成可能的完成;查看/etc/bash_completion.d/*示例。)

所以:

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

相关内容