Wie kann ich Syntastic dazu bringen, neuere Ruby-Syntax zu erkennen?

10

Ich verwende Syntastic in Vim und es hebt neuere Ruby-Syntax als Fehler hervor. Wenn ich beispielsweise erforderliche Schlüsselwortargumente verwende (eingeführt in Ruby 2.1), wie folgt:

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

... hebt die Definitionszeile hervor und sagt "unerwartet", ".

Wie kann ich erreichen, dass dies als gültige Ruby-Syntax erkannt wird? Ich habe bereits aktualisiert ~/.vim/syntax/ruby.vim.

Nathan Long
quelle
Hinweis: ~/.vim/syntax/ruby.vimHat nichts mit der Überprüfung der Syntax in Dateien zu tun . Es dient zum Hervorheben der Syntax . Siehe robots.thoughtbot.com/writing-vim-syntax-plugins
Nathan Long

Antworten:

9

Geben Sie die ausführbare Ruby-Datei für Syntastic an

Syntastische Aufrufe ruby -c, um die Syntax einer Datei zu überprüfen, sodass die angezeigten Fehler von der verwendeten Ruby-Version abhängen.

Sie können es auf dasjenige verweisen, das Sie wie folgt verwenden möchten:

let g:syntastic_ruby_exec = 'path/to/ruby/executable'

HINWEIS: auf neuere Versionen von Syntastic:

let g:syntastic_ruby_mri_exec = 'path/to/ruby/executable'

$ type rubyHier erfahren Sie, wo sich Ihre aktuelle Ruby-Programmdatei befindet. Ruby-Installer haben ihre eigenen Konventionen darüber, wo sie ihre Binärdateien platzieren. Z.B:

  • ruby-install setzt Ruby-Installationen ~/.rubiesund bestimmte Versionen unter Pfaden wie~/.rubies/ruby-2.2.0/bin/ruby
  • RVM legt Ruby-Installationen ~/.rvm/rubiesund bestimmte Versionen unter Pfaden wie~/.rvm/rubies/ruby-2.2.0/bin/ruby
Nathan Long
quelle
Zu Ihrer Information: Wenn Sie RVM verwenden, wäre eslet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben
@ Ben guter Punkt - aktualisierte Antwort
Nathan Long
3
Für die neuere Version von syntastic gilt Folgendes:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX
1
Wenn Sie rbenv verwenden, sollten Sie in der Lage sein, dies zu tun, let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'damit Ruby-Versionen, die wechseln, es automatisch abrufen , denke ich.
Thermatix
Nice @ Thermatix .. Ich habe system("rbenv which ruby")in meinem .vimrc
rthbound
4

Unter Verwendung von Terminal Macvim hatte ich auch dieses Problem, das durch die Tatsache, dass ich zsh verwendete, verschärft wurde, was aus irgendeinem Grund die von mir angegebene rvm-Binärdatei nicht respektierte. Ich stellte fest, dass meine Pfade bei der Ausführung !echo $PATHin Terminal Macvim falsch waren und dass mehrere Systempfade an die Oberseite angehängt wurden, die sich nicht in meiner regulären Shell befanden, sodass die Standard-MRT immer noch geladen wurde.

Um dies zu beheben, musste ich die Syntaxprüfung in meiner .vimrc-Datei überhaupt nicht angeben, musste jedoch aktualisieren, wie zsh gestartet wurde. Unter Verwendung des Threads unter: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html bin ich einfach gelaufen sudo mv /etc/zshenv /etc/zprofileund jetzt funktioniert alles und meine Pfade sind in mvim korrekt. Dies sollte auch das Problem der Aktualisierung der Syntastik bei der Installation einer neuen Ruby-Version über rvm lösen.

Adam
quelle
Dies ist die eigentliche Lösung! Das Problem ist auf eine Einschränkung bei der Installation von zsh über brew in OSX zurückzuführen .
Jikku Jose
Zufällige Frage - ist "terminal macvim" nicht nur vim? Welche Vorteile bietet Ihnen Macvim im Terminal gegenüber der Verwendung von Plain Vim?
Nick
0

Für ein Rails-Projekt.

  • Legen Sie die Ruby-Version in einer .ruby-versionDatei im Projektstamm fest.
  • Und starten Sie Ihr vim vom Projektstamm.

Syntastic führt die Syntaxprüfung mit der angegebenen Ruby-Version durch.

lingceng
quelle