bash选项卡完成没有变量扩展?

时间:2011-02-08 19:51:03

标签: bash variables expansion bash-completion

假设我在bashrc

中定义了这些变量
i='cgi-bin/internal';  
e='cgi-bin/external';  
f='cgi-bin/foo';  
b='cgi-bin/bar';  
ad='cgi-bin/admin';  
#etc...

当我在命令行vim $i/edit_ TAB 上使用变量时,它将扩展变量,命令行上的输入变为vim /www/productX/subdomain_x/cgi-bin/internal/edit_(对应于我所在的任何站点)然后我 TAB TAB 以获得可能的完成。

没关系,功能不是问题。只是每次看到完整路径而不仅仅是变量的值会变得烦人。

有没有办法不在命令行上扩展bash变量而不影响功能?
是这样做的bash完成吗?

期望的结果是$i不会扩展到它的值(视觉上)或$i扩展到相对路径而不是完整路径。

3 个答案:

答案 0 :(得分:2)

您可以尝试使用zsh代替bash。在zsh中,

vim $i[tab]

将$ i扩展为相对路径

(另外Oh My Zsh非常适合自定义zsh)

答案 1 :(得分:0)

我不确定您在bash启动脚本中使用了哪些其他设置,但对我来说,以下bash命令可以解决这个问题:

complete -r -v

答案 2 :(得分:0)

使用 shopt -u progcomp 为我工作,此后标签不再扩展变量。 一个shopt doc https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html