我用virtualenvwrapper
创建了一个名为augpy
的virtualenv。当我输入workon augpy
时,它工作正常,get被正确激活。然而,当我试图单独使用workon
列出virtualenvs时,我得到了一个奇怪的输出:
$ workon
]7;file://new-host.home/Users/Me/.virtualenvsaugpy
我不知道为什么-也许是因为我用的外壳混淆了?我目前使用zsh(5.0.2,osx10.8)plusoh-my-zsh
作为我的默认shell。当我在bash中输入workon
时,我得到了正确的结果(并且自动完成也起作用):
有什么我应该为zsh设置的吗?在
恐怕这是部分回答。在
你看到的问题和我的天哪,没有关系。这个问题是在
virtualenvwrapper.sh
的第539行介绍的。在zsh中调用的子shell返回STDOUT上的最后一个工作目录,用控制字符包装。这很容易验证:
我在任何地方都找不到这个功能的文档。比如说最近在zs0.5中引入了它?在
在
virtualenvwrapper.sh
中的virtualenvwrapper_show_workon_options()
函数中调用的fmt
命令使返回的路径可见,从而导致输出混乱。在更新:
在Evaleveflow下面的评论的提示下,我做了进一步的挖掘,发现真正的问题在于我改变OSX终端的代理图标的方式。事实上,事实证明,哦,我的zsh使用了完全相同的方法。在写这篇文章时,我已经在GitHub上提交了一个pull请求,以便在oh my zsh中修复这个问题。在
这也可以通过向STDERR而不是STDOUT发出受控制字符保护的路径来解决。在
在前面链接的macworld提示中,这需要将命令
printf '\e]7;%s\a' "$PWD_URL"
更改为printf '\e]7;%s\a' "$PWD_URL" 1>&2
。在相关问题 更多 >
编程相关推荐