如何使Syntastic识别较新的Ruby语法?


10

我在Vim中使用Syntastic,它突出显示了较新的Ruby语法为错误。例如,如果我使用必需的关键字参数(在Ruby 2.1中引入),如下所示:

def distance(from:, to:)
  # whatever
end

...它突出显示了定义行,并说“意外的','”。

我如何才能将其识别为有效的Ruby语法?我已经更新了~/.vim/syntax/ruby.vim


注意:~/.vim/syntax/ruby.vim检查文件语法无关。用于语法高亮显示。参见robots.thoughtbot.com/writing-vim-syntax-plugins
内森·朗

Answers:


9

为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安装程序对放置二进制文件的位置有自己的约定。例如:

  • ruby-install~/.rubies在以下路径中放置ruby安装和特定版本~/.rubies/ruby-2.2.0/bin/ruby
  • RVM~/.rvm/rubies在以下路径中放置ruby安装和特定版本~/.rvm/rubies/ruby-2.2.0/bin/ruby

FYI:如果你正在使用RVM这将是let g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'

@Ben好点-更新答案
内森·朗

3
对于较新版本的syntastic,它是:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX 2015年

1
let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'我认为,如果您使用的是rbenv,则应该能够做到,以便在切换红宝石版本时,它应该自动将其拾取。
Thermatix '16

尼斯@Thermatix ..我曾经system("rbenv which ruby")在我的vimrc
rthbound

4

使用终端macvim时,我也遇到了这个问题,这是由于我使用zsh的事实而加剧的,由于某种原因,zsh 并不尊重我合成的rvm二进制文件。我意识到,!echo $PATH在终端macvim中运行时,我的路径不正确,我在顶部添加了几个系统路径,这些路径不在我的常规shell中,仍然导致加载默认MRI。

为了解决这个问题,我根本不需要在.vimrc中指定语法检查器,但是我必须更新zsh的启动方式。在以下位置使用线程:http : //vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html我最终只是简单地运行sudo mv /etc/zshenv /etc/zprofile,现在一切正常,并且在mvim中我的路径是正确的。通过rvm安装新的红宝石版本时,这还应该解决更新合成的问题。


这是实际的解决方法!问题是由于在OSX中通过brew安装了zsh警告
Jikku Jose

随机问题-“ terminal macvim”不只是vim吗?与使用普通vim相比,在终端中使用Macvim有什么好处?
尼克

0

对于Rails项目。

  • .ruby-version在项目根目录的文件中设置Ruby版本。
  • 然后从项目根目录启动vim。

Syntastic将使用指定的ruby版本进行语法检查。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.