如何使 bash 补全行为像这样?

Lun*_*our 1 bash bashrc tab-completion

I\xe2\x80\x99m 不确定我\xe2\x80\x99m 的要求是否可能,但我希望 bash 在制表符按下时执行以下操作:

\n\n
    \n
  • 在第一个选项卡按下时,展开一个公共前缀(跳过/嘟嘟声并且不执行任何操作,我不\xe2\x80\x99t真的介意,如果有\xe2\x80\x99t)
  • \n
  • 在第二个选项卡上按下,列出选项
  • \n
  • 任何后续的选项卡按下都会循环显示这些选项
  • \n
\n\n

如果在整个过程中按下 Tab 以外的任何键,则下一次按 Tab 的行为将与第一步相同。

\n\n

我设法得到一和二:

\n\n
bind \xe2\x80\x9cset show-all-if-unmodified on\xe2\x80\x9d\nbind \xe2\x80\x98set menu-complete-display-prefix on\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n\n

我成功地得到了一和三:

\n\n
bind \xe2\x80\x98set menu-complete-display-prefix on\xe2\x80\x99\nbind \xe2\x80\x98TAB:menu-complete\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,将所有三个选项结合起来会得到一和三。

\n\n

我怎样才能获得所需的行为?

\n\n

谢谢!

\n

小智 6

设置这些选项.inputrc是关闭的:

set show-all-if-ambiguous on
set menu-complete-display-prefix on
TAB: menu-complete
set colored-completion-prefix on
set colored-stats on
Run Code Online (Sandbox Code Playgroud)

它结合了第一步和第二步,当您第一次按 TAB 时,它会完成公共前缀,并显示可能的完成列表。随后按 TAB 键将循环浏览它们。我发现“彩色”选项很有帮助,因此我将它们列为奖励。