1

使用 Vim 时,您可以通过

:!<command_name>

这是我的问题。

我已将当前的 Ruby 设置为

ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0]

这是来自的输出

ruby -v

在 Terminal.app 或只是终端。

一旦我加载 MacVim 并输入

:!ruby -v

我明白了

ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]

Vim 从哪里得到它的上下文?

它似乎没有遵守我在.zshrc. 这些设置似乎都没有加载或生效。我什至创建了一个函数来通过命令行获取我的点文件

:!source ~/.zshrc

并无济于事!

我不明白这里到底发生了什么。我遇到了一个问题,因为 Vim 使用的是 Ruby 1.9.3p0,但 RVM 设置为不同的 Ruby。这当然会破坏对 Rails 的任何调用。

/usr/lib/ruby/1.9.1/rubygems.rb:314:in `bin_path': can't find gem rails ([">= 0"]) with executable rails (Gem::GemNotFoundException)
        from /usr/bin/rails:19:in `<main>'

shell returned 1

有人可以告诉我如何覆盖它吗?

甚至我的 rails 版本在 Vim 和终端中也有所不同。

# Terminal output
which rails

# prints - /Users/adubb/.rvm/gems/ruby-1.9.3-p194/bin/rails

# Vim/MacVim output
:!which rails

# prints - /usr/bin/rails
4

1 回答 1

1

好的,伙计们,一切都很好。让我概述一下解决问题的步骤。首先,非常感谢@romainl 和@mpapis 的帮助。@romainl,我做的第一件事是尝试 RVM 插件,但这没有帮助。然后我查看了@mpapis 发布的链接,在那里我了解了 MacVim 的隐藏设置。好吧,我不能马上找到这个设置,因为当他们提到偏好时,他们并不是在谈论 UI(通常映射到 Command + ,热键)。他们在谈论

:h macvim

我在扫描上述帖子后发现了这一点。

进入 macvim 帮助部分后,我搜索了世界“shell”。

/shell

我在 3. Preferences 部分下找到了两个设置。

==============================================================================
3. Preferences                  macvim-prefs macvim-preferences

Some settings are global to the MacVim application and would not make sense as
Vim options.  These settings are stored in the user defaults database and can
be accessed via the "MacVim.Preferences..." menu item.

                            macvim-user-defaults
Not all entries in the user defaults database are exposed via the preference
panel, usually because they should not be changed by the user under normal
circumstances.  These options can still be changed with the "defaults" command
by opening Terminal and typing

    defaults write org.vim.MacVim KEY VALUE

Check the man page on "defaults" for more information on this command as well
as general information regarding Mac OS X user defaults.

Here is a list of relevant dictionary entries:

...more entries
MMLoginShellArgument    login shell parameter [string]
MMLoginShellCommand     which shell to use to launch Vim [string]
...more entries

MMLoginShellArgument 和 MMLoginShellCommand 设置引起了我的注意。所以我尝试了其中一种设置

defaults write org.vim.MacVim KEY VALUE

语法,但无济于事。

然后我搜索了“mmloginshell command macvim”,这是我在 MacVim 帮助的首选项部分找到的 2 个设置之一。

第一个链接是 Stackoverflow 问题。

到达那里后,我遇到了这个答案,对我来说,这是 MacVim Github wiki 上的这个页面

在那里,我按照 Björn Winckler(MacVim 核心开发人员)的故障排除指南中的步骤进行操作;特别是标题为“对于 zsh 用户”的部分。

正是在这里,我了解了这两个文件:

/etc/zshenv 
/etc/zprofile

人们会期望在加载 MacVim 并且 zsh 是当前 shell 时会读取/获取 ~/.zshrc 的内容,但事实并非如此。一旦我意识到这两个文件之一(/etc/zshenv 和 /etc/zprofile)应该包含我的 $PATH 变量,我开始将它从 ~/.zshrc 单独迁移到每个文件,以查看是否可以工作. 我最初以 /etc/zshenv 为目标(同时保持 /etc/zprofile 完好无损),重新加载 vim/MacVim,一切都完美无缺。

which rails

这次实际上有正确的输出。

@romainl,当您最初询问我的 $PATH 变量是否在 Terminal.app 和 vim 之间同步时,我想我错误地认为它们是等价的。后来在分析两组输出时,我发现它们确实略有不同。对于潜在问题是什么,这将是一个很好的指标。我的错误,谢谢。

Bash 用户可能想考虑我怀疑的 /etc/zshenv 等价物,本文对此进行了概述

Ben Schmidt 提到你应该在“~/.profile 而不是~/.bashrc”中设置你的 $PATH 变量;所以在进行故障排除时需要考虑一些事情。

我不记得在 ~/.bashrc 中指定了我的 $PATH 变量时曾经遇到过 bash 的这个问题,但是谁知道呢……这些信息在某些时候可能会派上用场。

谢谢大家,我希望这些信息能帮助困扰 zsh 的用户。快乐 Ruby 黑客攻击。

于 2012-06-21T02:04:28.120 回答