我如何获得bash制表符补全以在参数开头停止转义glob通配符?

问题描述

当我尝试使用bash中的制表符补全来表示以?*开头的文件glob模式时,我会按预期获得完成选项列表,但随后修改了我的命令提示符逃脱glob特殊字符。

例如:

$ ls *.txt                  # tab-complete instead of enter
bar.txt  fib.txt  foo.txt
$ ls \*.txt                 # Now my '*' is escaped

并且:

$ ls ???.txt                # tab-complete
bar.txt  fib.txt  foo.txt
$ ls \?\?\?.txt             # please stop

当触发制表符完成时,如何停止转义特殊字符?

*?特殊字符不在完成模式的开头时,不会发生这种情况:

$ ls f*.txt       # tab-complete
fib.txt  foo.txt
$ ls f*.txt       # my prompt doesn't change. This is what I want.

此问题似乎非常类似于:

尽管如此,所有解决方案似乎都无法解决我的问题。

有关我的设置的一些信息:

  • 我的~/.inputrc包含(几乎排他)set editing-mode viset show-all-if-unmodified on
  • 我正在使用bash版本5.0.17(1)-发行版(x86_64-pc-linux-gnu)。
  • 我卸载了bash-completion,因为它导致了制表符补全的另一个问题。 (制表符补全更改了我的提示,使之使用第一个匹配项,而不是向我显示选项。我想到了从https://unix.stackexchange.com/a/278449/439902卸载它的想法。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)