如何在vim中使用正确的ruby? 如何在VIM中修改$ PATH?

我使用普通的Vim和​​Lion上的ruby支持(由gist安装)。 我正在使用ruby和rbenv,所以我的路径看起来像/users/me/.rbenv/shims:…..

从vim内部的路径是

:!echo $PATH > usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/fb/.rbenv/shims:.... 

即使我可以创建和修改环境变量:

 :let $PATH = "/bar:/foo" :!echo $PATH > /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/foo:/bar 

路径仍然以/ usr / bin开头。

那么如何在〜/ .rbenv / shims中访问我的ruby 1.9.3而不是/ usr / bin中的系统ruby?

这是Apple在OS X 10.5 Leopard中引入的已知问题 。

如果您使用的是Bash或Zsh,并且正在使用非交互式shell,则会受到影响。

运行sudo chmod ugo-x /usr/libexec/path_helper会解决你的问题,但你应该看一下这篇文章,看看原因。

rvm也有这个问题。 如果zsh是启动/etc/zshenv执行时的默认shell。

这将执行/usr/libexec/path_helper 。 这将根据内容/etc/paths/etc/paths.d/ /etc/paths

rvm的faq提到将/etc/zshenv移动到/zsh/zshrc 。 我做了这个,它从macvim中我的路径的开头删除了/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

我没有在.vimrc中设置shell选项,因此它自动设置为/bin/zsh

然后我发现我在我的.zshrc中进行了rbenv的初始化初始化。 我删除了.zshrc中的初始化结束$ PATH extensioin,因为这已经由oh-my-zsh rbenv插件处理了。

即使在清理之后,$ PATH管理仍然如此:!echo $PATH

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/fb/.rbenv/shims:/Users/fb/.rbenv/bin: /用户/ FB /斌:在/ usr / local / sbin中:在/ usr /游戏

设置:set shell=/bin/bash帮助了我,因为我可以在我的vim中使用bash ::: :!echo $PATH

/Users/fb/.rbenv/shims:/Users/fb/.rbenv/bin:/Users/fb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin :/ sbin目录:/ bin中:在/ usr /游戏:/用户/ FB / Dropbox的/本地/ bash的

在你的〜/ .bashrc(或你正在使用的任何shell)文件中,添加以下行:

 PATH=/home/me/.rbenv/shims:${PATH} 

然后运行source ~/.bashrc (或.zshrc或你正在使用的任何shell!)

这可以通过添加来修复

 PATH=/home/me/.rbenv/shims:${PATH} 

 /etc/zshenv 

在OS X上是的,它是在打开一个新的控制台窗口时获取的bash_profile,而在Linux上它是你的bashrc

我不使用mac或zsh(我在linux上),但是当我从MATE菜单运行gvim时遇到了这个问题。

我通过将它添加到我的.vimrc来解决它:

 if $PATH !~ "\.rbenv" let $PATH="/home/username/.rbenv/shims:/home/username/.rbenv/bin:" . $PATH endif 

如果从终端运行vim,这可以避免设置它,否则rbenv路径将包含两次。

我尝试将应用程序设置为通过终端运行,但这没有帮助。