我查看了很多 bash 选项卡补全问题,但尚未找到可以回答这个问题的答案。
我使用的是 Linux 系统(GNU bash,版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)),通常制表符补全工作得很好。
但是,当我对环境变量或命令行选项使用制表符补全时,它会失败。例如,
ls /v<TAB>
-> ls /var/
export FOO=/v<TAB>
-> export FOO=/v
(铃声响起)
当我在 Mac(GNU bash,版本 5.0.16(1)-release (x86_64-apple-darwin18.7.0))上执行此操作时,环境变量值的选项卡补全工作正常。
在两台机器上,$COMP_WORDBREAKS
都是"'><=;|&(:
.
有人(我不知道这是从哪里来的)建议
shopt -u progcomp
可能会有所帮助,并且确实可以解决问题!但是,我不需要在 Mac 端取消该选项,而且我担心它可能会导致其他奇怪的副作用。
取消设置是正常现象吗?我还能做些什么来解决这个问题吗?
答案1
shopt -u progcomp
禁用可编程完成,即可以提供例如每个程序完成的脚本。它们可能提供诸如仅完成匹配的文件之类的功能,*.tar
或者当命令行以 开头时等tar
。这些脚本通常随您的发行版一起提供,对于 Mac,也可能不提供。
progcomp
如果这些脚本引起的错误和错误功能看起来比实际功能有用(对我来说,大约 100% 的情况下)更烦人,那么禁用它也是可以的。