Как заставить Syntastic распознавать новый синтаксис Ruby?


10

Я использую Syntastic в Vim, и он выделяет новый синтаксис 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
Натан Лонг,

Ответы:


9

Укажите исполняемый файл ruby ​​для Syntastic

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 помещает установки ruby ~/.rubiesи определенные версии в пути, подобные~/.rubies/ruby-2.2.0/bin/ruby
  • RVM помещает установки ruby ~/.rvm/rubiesи определенные версии в пути, подобные~/.rvm/rubies/ruby-2.2.0/bin/ruby

К вашему сведению: если вы используете rvm, это будетlet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Бен

@ Хорошее замечание - обновленный ответ
Натан Лонг,

3
Для более новой версии синтетики, это:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX

1
Если вы используете rbenv, вы должны быть в состоянии сделать let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'так, чтобы при переключении версий ruby ​​он автоматически поднимался, я думаю.
Thermatix

Хороший @Thermatix .. Я использовал system("rbenv which ruby")в своем .vimrc
rthbound

4

При использовании терминала Macvim у меня также была эта проблема, которая усугублялась тем, что я использовал zsh, который по какой-то причине не соблюдал двоичный файл rvm, который я дал синтетическому. Я понял, что мои пути были неправильными при работе !echo $PATHв терминальном macvim, к вершине добавились несколько системных путей, которых не было в моей обычной оболочке, которые по-прежнему вызывали загрузку MRI по умолчанию.

Чтобы это исправить, мне вообще не нужно было указывать проверку синтаксиса в моем .vimrc, однако мне пришлось обновить способ запуска zsh. Используя поток по адресу: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html В итоге я просто запустился, sudo mv /etc/zshenv /etc/zprofileи теперь все работает, и мои пути в mvim верны. Это также должно решить проблему обновления syntastic при установке новой версии ruby ​​через rvm.


Это фактическое исправление! Проблема заключается в том, что в OSX установлен zsh, установленный через brew .
Джикку Хосе

Случайный вопрос - не является ли «терминал Macvim» просто VIM? Какие преимущества вы получаете при использовании Macvim в терминале по сравнению с использованием простого vim?
Ник

0

Для проекта Rails.

  • Установите версию ruby ​​в .ruby-versionфайле в корне проекта.
  • И запустите свой vim из корня проекта.

Syntastic выполнит проверку синтаксиса с указанной версией ruby.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.