【问题标题】:How to use correct ruby in vim ? How to modify $PATH in VIM?如何在 vim 中使用正确的 ruby​​?如何在 VIM 中修改 $PATH?
【发布时间】:2015-02-15 16:04:27
【问题描述】:

我在 Lion(由 gist 安装)上使用带有 ruby​​ 支持的普通 Vim。我将 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​​ 呢?

【问题讨论】:

    标签: ruby vim osx-lion rbenv


    【解决方案1】:

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

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

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

    【讨论】:

    • 此解决方案完美运行。但我发现 tpope 的 vim-rbenv 提供的建议更好,因为它仍然可以在交互式 shell 上执行 path_helper。只需 sudo mv /etc/zshenv /etc/zshrc 和 vim 说耶!
    • 这真的无法获得足够的支持。这是我第二次来这里,因为世界上怎么会有人记得他们在设置环境时需要这样做。
    • 运行此命令时出现chmod: Unable to change file mode on /usr/libexec/path_helper: Operation not permitted 错误。任何指针。
    • @Zuhaib 你在用sudo吗?
    • @EdwardOcampo-Gooding 我正在使用 sudo,但我也遇到了 Zuhaib 的问题。
    【解决方案2】:

    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

    【讨论】:

    • 我更改了/etc/paths,这对我有用。 谢谢!很高兴知道这一点。
    【解决方案3】:

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

    然后我发现我在我的 .zshrc 中有一个 rbenv: 的重复初始化。我删除了 .zshrc 中的初始化结束 $PATH 扩展,因为它已经由 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:/Users/fb/bin:/usr/local/sbin:/usr/games

    设置 :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/games:/Users/fb/Dropbox/local/bash

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • 如果你把它放在~/.bash_profile 你就不必运行源命令(每次你启动一个新的shell它都会自动运行那个命令)
      • 是的 - 没想到。虽然您只需要为编辑 ~/.bashrc 时打开的每个 shell 运行一次 source 命令。在我的脑海中,我正在从 zsh 翻译成 bash - 我真的只是想告诉他把它放在他的 ~/.zshrc 中:)
      • 感谢您的回答。我使用 zsh 并且没有 .bashrc 也没有 .bash_profile。为了测试我创建了它们,但它没有帮助。我使用 zsh 并且我的路径在终端和 Iterm2 中都设置正确。
      • in zsh echo $PATH >/Users/fb/.rbenv/shims:... 在vim :set shell? >shell=/bin/zsh, :echo $PATH >/Users/fb /.rbenv/shims:... 但是:!echo $PATH >/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/fb/。 rbenv/shims:...等等:!ruby -v>ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0] 而不是花哨的 1.9.3, :( ????
      • 根据安装说明 (github.com/sstephenson/rbenv#section_2),您的路径中应该有 /home/me/.rbenv/bin,而不是 / home/me/.rbenv/shims。你也可以试一试 rvm - 我在 Lion 上没有任何问题 (rvm.beginrescueend.com)
      【解决方案5】:

      这可以通过添加来解决

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

      /etc/zshenv
      

      【讨论】:

        【解决方案6】:

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

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

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

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

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-09
            • 2011-04-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多