Bagaimana saya bisa mendapatkan Syntastic untuk mengenali sintaksis Ruby yang lebih baru?

10

Saya menggunakan Sintaksis dalam Vim, dan menyoroti sintaksis Ruby yang lebih baru sebagai kesalahan. Misalnya, jika saya menggunakan argumen kata kunci yang diperlukan (diperkenalkan di Ruby 2.1), seperti ini:

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

... itu menyoroti garis definisi dan mengatakan "tak terduga ','".

Bagaimana saya bisa mengenalinya sebagai sintaksis Ruby yang valid? Saya sudah memperbarui ~/.vim/syntax/ruby.vim.

Nathan Long
sumber
Catatan: ~/.vim/syntax/ruby.vimtidak ada hubungannya dengan memeriksa sintaks dalam file; itu untuk sintaks penyorotan . Lihat robots.thoughtbot.com/writing-vim-syntax-plugins
Nathan Long

Jawaban:

9

Tentukan ruby ​​yang dapat dieksekusi untuk Syntastic

Panggilan sintaksis ruby -cuntuk memeriksa sintaksis suatu file, sehingga kesalahan yang ditampilkan tergantung pada versi ruby ​​mana yang digunakan.

Anda bisa mengarahkannya ke yang ingin Anda gunakan seperti ini:

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

CATATAN: pada versi Syntastic yang lebih baru:

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

$ type rubyakan memberi tahu Anda di mana Ruby Anda saat ini dapat dieksekusi. Pemasang Ruby memiliki konvensi sendiri tentang di mana mereka menempatkan binari mereka. Misalnya:

  • ruby-install menempatkan instalasi ruby ​​di ~/.rubiesdan versi tertentu di jalur seperti~/.rubies/ruby-2.2.0/bin/ruby
  • RVM menempatkan instalasi ruby ​​di ~/.rvm/rubiesdan versi tertentu di jalur seperti~/.rvm/rubies/ruby-2.2.0/bin/ruby
Nathan Long
sumber
FYI: jika Anda menggunakan RVM akanlet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben
@Ben good point - jawaban yang diperbarui
Nathan Long
3
Untuk versi sintaksis yang lebih baru, ini:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX
1
Jika Anda menggunakan rbenv, Anda harus dapat melakukannya let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'sehingga ketika versi ruby ​​berganti itu akan secara otomatis mengambilnya, saya pikir.
Thermatix
Nice @Thermatix .. Saya menggunakan system("rbenv which ruby").vimrc
rthbound
4

Menggunakan terminal macvim Saya juga punya masalah ini, yang diperparah oleh fakta bahwa saya menggunakan zsh, yang karena beberapa alasan tidak menghormati rvm biner yang saya berikan sintaksis. Saya menyadari bahwa jalur saya yang salah ketika berjalan !echo $PATHdi terminal macvim, saya memiliki beberapa jalur sistem yang ditambahkan ke atas yang tidak ada di shell reguler saya masih menyebabkan MRI default dimuat.

Untuk memperbaiki ini, saya tidak perlu menentukan pemeriksa sintaks sama sekali di .vimrc saya, namun saya harus memperbarui cara zsh memulai. Menggunakan utas di: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html Saya akhirnya hanya menjalankan sudo mv /etc/zshenv /etc/zprofiledan sekarang semuanya berfungsi dan jalur saya sudah benar dalam mvim. Ini juga harus menyelesaikan masalah memperbarui sintaksis ketika menginstal versi ruby ​​baru melalui rvm.

Adam
sumber
Ini adalah perbaikan yang sebenarnya! Masalahnya adalah karena peringatan dengan zsh diinstal via minuman di OSX .
Jikku Jose
Pertanyaan acak - bukankah "terminal macvim" hanya vim? Apa manfaat yang Anda dapatkan dari menggunakan Macvim di terminal dibandingkan menggunakan vim polos?
Nick
0

Untuk proyek Rails.

  • Atur versi ruby ​​dalam .ruby-versionfile di root proyek.
  • Dan mulai vim Anda dari root proyek.

Sintaks akan melakukan pemeriksaan sintaks dengan versi ruby ​​yang ditentukan.

Lingceng
sumber