为什么自动完成功能会随着 /bin/bash 中的环境变量而变化

为什么自动完成功能会随着 /bin/bash 中的环境变量而变化

为什么:

vi $VIRTUAL_ENV/bin/postact<TAB>

变得

vi \$VIRTUAL_ENV/bin/postactactivate

在 ubuntu 20.04 上

vi $VIRTUAL_ENV/bin/postactactivate 

在 macOS 上。Ubuntu 版本破坏了此命令的自动完成功能。

macOS$ echo $BASH_VERSION 3.2.57(1)-release

ubuntu$ echo ${BASH_VERSION} 5.0.17(1)-release

答案1

您已bash-completion在 Ubuntu 上安装了该软件包。其通用 _filedir_xspec 制表符补全处理程序会盲目引用补全字符串中的所有特殊字符,而不知道它们之前是否被引用过。

使用来解决这个问题 – 或者完全删除 bash-completion。(或者找到一种方法来专门删除 的完成处理程序。)vim "$VIRTUAL_ENV"/Tabvi

替代技巧:对 $VIRTUAL_ENV 变量执行内联扩展,使其具有实际值,并且vim $VIRTUAL_ENV/Ctrl+Alt+E然后您可以放心使用,Tab无需担心变量。

相关内容