Làm cách nào tôi có thể nhận Syntastic để nhận ra cú pháp Ruby mới hơn?


10

Tôi đang sử dụng Syntastic trong Vim và nó làm nổi bật cú pháp Ruby mới hơn là lỗi. Ví dụ: nếu tôi sử dụng các đối số từ khóa bắt buộc (được giới thiệu trong Ruby 2.1), như thế này:

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

... nó làm nổi bật dòng định nghĩa và nói "không mong đợi", "".

Làm thế nào tôi có thể làm cho nó nhận ra đây là cú pháp Ruby hợp lệ? Tôi đã cập nhật ~/.vim/syntax/ruby.vim.


Lưu ý: ~/.vim/syntax/ruby.vimkhông có gì để làm với việc kiểm tra cú pháp trong tệp; đó là để làm nổi bật cú pháp . Xem robots.thoughtbot.com/writing-vim-syntax-plugins
Nathan dài

Câu trả lời:


9

Chỉ định ruby ​​thực thi cho Syntastic

Các cuộc gọi ruby -ccú pháp để kiểm tra cú pháp của một tệp, vì vậy các lỗi mà nó hiển thị phụ thuộc vào phiên bản sử dụng ruby ​​của nó.

Bạn có thể trỏ nó đến cái bạn muốn sử dụng như thế này:

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

LƯU Ý: trên các phiên bản mới hơn của Syntastic:

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

$ type rubysẽ cho bạn biết nơi thực thi Ruby hiện tại của bạn. Trình cài đặt Ruby có quy ước riêng về nơi chúng đặt nhị phân của chúng. Ví dụ:

  • ruby-install đặt cài đặt ruby ​​trong ~/.rubiesvà các phiên bản cụ thể tại các đường dẫn như~/.rubies/ruby-2.2.0/bin/ruby
  • RVM đặt cài đặt ruby ~/.rvm/rubiesvà các phiên bản cụ thể tại các đường dẫn như~/.rvm/rubies/ruby-2.2.0/bin/ruby

FYI: nếu bạn đang sử dụng rvm thì sẽ như vậylet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben

@Ben điểm tốt - câu trả lời được cập nhật
Nathan Long

3
Đối với phiên bản mới hơn của cú pháp, đó là:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX

1
Nếu bạn đang sử dụng rbenv, bạn sẽ có thể làm let g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'như vậy khi các phiên bản ruby ​​chuyển đổi, nó sẽ tự động nhận nó, tôi nghĩ vậy.
Thermatix

Đẹp @Thermatix .. Tôi sử dụng system("rbenv which ruby")trong vimrc của tôi
rthbound

4

Sử dụng terminal macvim tôi cũng gặp vấn đề này, điều này được giải quyết bằng việc tôi đang sử dụng zsh, vì một số lý do không tôn trọng nhị phân rvm mà tôi đã đưa ra. Tôi nhận ra rằng các đường dẫn của tôi không chính xác khi chạy !echo $PATHtrong thiết bị đầu cuối macvim, tôi có một số đường dẫn hệ thống được nối vào đầu không có trong vỏ thông thường của tôi vẫn khiến MRI mặc định tải.

Để khắc phục điều này, tôi không cần chỉ định trình kiểm tra cú pháp trong .vimrc của mình, tuy nhiên tôi phải cập nhật cách zsh bắt đầu. Sử dụng chuỗi tại: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.html Tôi đã kết thúc đơn giản là chạy sudo mv /etc/zshenv /etc/zprofilevà bây giờ mọi thứ hoạt động và đường dẫn của tôi đều chính xác trong mvim. Điều này cũng sẽ giải quyết vấn đề cập nhật cú pháp khi cài đặt phiên bản ruby ​​mới thông qua rvm.


Đây là sửa chữa thực tế! Vấn đề là do một cảnh báo với zsh được cài đặt thông qua brew trong OSX .
Jikku Jose

Câu hỏi ngẫu nhiên - không phải là "terminal macvim" chỉ là vim? Những lợi ích nào bạn có được khi sử dụng Macvim trong thiết bị đầu cuối so với sử dụng vim đơn giản?
Nick

0

Đối với một dự án Rails.

  • Đặt phiên bản ruby ​​trong một .ruby-versiontệp ở gốc dự án.
  • Và bắt đầu vim của bạn từ gốc dự án.

Syntastic sẽ thực hiện kiểm tra cú pháp với phiên bản ruby ​​được chỉ định.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.