我在 Vim 中使用 Syntastic,它会将较新的 Ruby 语法突出显示为错误。例如,如果我使用必需的关键字参数(在 Ruby 2.1 中引入),如下所示:
def distance(from:, to:)
# whatever
end
...它突出显示了定义行并显示“意外的‘,’”。
我怎样才能让它将其识别为有效的 Ruby 语法?我已经更新了~/.vim/syntax/ruby.vim
。
答案1
为 Syntastic 指定 ruby 可执行文件
Syntastic 调用ruby -c
来检查文件的语法,因此它显示的错误取决于它使用的 ruby 版本。
您可以将其指向您想要使用的那个,如下所示:
let g:syntastic_ruby_exec = 'path/to/ruby/executable'
笔记:在较新版本的 Syntastic 上:
let g:syntastic_ruby_mri_exec = 'path/to/ruby/executable'
$ type ruby
会告诉您当前的 Ruby 可执行文件位于何处。Ruby 安装程序对于放置二进制文件的位置有自己的约定。例如:
答案2
使用 macvim 终端时,我也遇到了这个问题,而且由于我使用的是 zsh,因此这个问题变得更加严重。不是关于我提供给 syntastic 的 rvm 二进制文件。我意识到在终端 macvim 中运行时我的路径不正确!echo $PATH
,我在顶部附加了几个系统路径,而这些路径不在我的常规 shell 中,这仍然导致默认 MRI 加载。
为了解决这个问题,我根本不需要在 .vimrc 中指定语法检查器,但是我必须更新 zsh 的启动方式。使用以下线程:http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html我最终只是运行了一下sudo mv /etc/zshenv /etc/zprofile
,现在一切正常,并且我的路径在 mvim 中正确。这也应该解决了通过 rvm 安装新版 ruby 时更新 syntastic 的问题。
答案3
对于 Rails 项目。
.ruby-version
在项目根目录的文件中设置 ruby 版本。- 并从项目根目录启动你的 vim。
Syntastic 将使用指定的 ruby 版本进行语法检查。