为什么:
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"/Tab
vi
替代技巧:对 $VIRTUAL_ENV 变量执行内联扩展,使其具有实际值,并且vim $VIRTUAL_ENV/Ctrl+Alt+E
然后您可以放心使用,Tab无需担心变量。