最近我看到Gary Bernhardt展示了他用来从
vim中执行
Ruby代码的vim快捷方式.捷径是
:map,t :w\|:!ruby %<cr>.
看来这个方法总是执行系统Ruby,在我的例子中是1.8.7.我对升级它犹豫不决,因为我听说改变System Ruby解释器会导致一些不稳定的问题.反正有没有让这个命令使用RVM目录的版本设置?
指定ruby的最直接方法是在其中给出其完整路径名:命令(而不是依赖于在PATH目录中首先找到的ruby):
>在/ path / to / your / preferred / ruby中使用Ruby:
:!/path/to/your/preferred/ruby %
>使用RVM安装的ruby-1.9.2-head:
:!~/.rvm/bin/ruby-1.9.2-head %
>在rails3-dev gemset中使用RVM安装的ruby-1.9.2-head:
:!~/.rvm/bin/ruby-1.9.2-head@rails3-dev %
所以你的map命令可能会像这样结束:
:map,t :w\|:!~/.rvm/bin/ruby-1.9.2-head@rails3-dev %<cr>
通常也可以调整PATH环境变量的有效值,以便找到您想要的第一个ruby,但它可能并不总是如您所愿.具体来说,:!命令由shell Vim选项配置的shell处理(:set shell?以查看其值).该shell的配置文件可能会修改Vim为shell提供的PATH值(将Vim的PATH(:echo $PATH)与PATH进行比较:!命令最终使用(:!echo $PATH)来查看shell的配置文件可能正在调整PATH).
您可以尝试修改Vim及其子代使用的PATH,如下所示:
:let $PATH = $HOME . '/.rvm/wrappers/ruby-1.9.2-head@rails3-dev:' . $PATH
您应该使用以下命令检查有效PATH:!echo $PATH和:!ruby以查找您的shell是否正在进一步修改PATH(如果您遇到此问题,可以:set shell = / bin / sh).
注意:我从未见过RVM的包装器目录的这种特殊用途,未来版本的RVM可能会破坏它.正常的用法是创建一个包装器并直接从〜/ .rvm / bin调用它(类似于本文的第一部分),而不是在PATH中放置〜/ .rvm / wrapper / whatever.