Bash:菜单仅适用于少数匹配项

Bash:菜单仅适用于少数匹配项

使用 Bash 自动完成功能,是否有一种方法可以仅当有 1-2 个选项时使用菜单完成来循环匹配,否则使用完整列表?

例子

主目录包含桌面、文档、下载、项目和公共

~$ cd D<tab><tab> # lists matches
Desktop    Documents    Downloads
~$ cd De<tab> # completes Desktop

~$ cd P<tab> # completes Projects
~$ cd Projects<tab> # completes Public

前者是complete行为,后者是menu-complete。我希望它在只有 1-2 个匹配项时选择第二个选项,如果有 3 个或更多匹配项,则选择第一个选项。

答案1

看来是没有办法了。

我知道您特别要求使用 bash,但如果您想尝试 zsh,它会在第一次按下 tab 时使用普通列表完成,并在第二次按下时循环显示可能的值。我认为这非常方便,而且切换是轻而易举的,因为 zsh 与 bash 非常相似。

答案2

双击 tab 键?或者您是想获取类似命令的内容,然后在命令后列出 arg1 或 arg2?

回答

您需要编辑您的/etc/inputrc并在某处添加以下行:

"\C-i": menu-complete 

然后运行此命令以立即设置您的更改:

#: bind -f /etc/inputrc

不幸的是,我没有看到通过选择数量来限制它的方法,但是当你按下“tab”键时,你可以通过这种方式来切换它

参考:independentchaos.com

相关内容