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

时间:2012-03-24 16:56:34

标签: ruby vim osx-lion rbenv

我在Lion上使用普通的Vim和​​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?

7 个答案:

答案 0 :(得分:30)

这是a known problem introduced by Apple in OS X 10.5 Leopard

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

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

答案 1 :(得分:5)

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

执行/usr/libexec/path_helper。这会根据内容/etc/paths/etc/paths.d/设置路径。

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

答案 2 :(得分:4)

我没有在.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 / bin中:在/ 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 /升降梭箱/本地/ bash的

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:1)

只需添加

即可解决此问题
PATH=/home/me/.rbenv/shims:${PATH}

/etc/zshenv

答案 5 :(得分:1)

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

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

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

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

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

答案 6 :(得分:0)

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