使用 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”键时,你可以通过这种方式来切换它