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