ฉันจะให้ Syntastic รู้จักไวยากรณ์ของ Ruby ที่ใหม่กว่าได้อย่างไร


10

ฉันใช้ Syntastic เป็นกลุ่มและจะเน้นไวยากรณ์ของ Ruby ที่ใหม่กว่าเป็นข้อผิดพลาด ตัวอย่างเช่นถ้าฉันใช้อาร์กิวเมนต์คำหลักที่ต้องการ (แนะนำใน Ruby 2.1) เช่นนี้:

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

... มันเน้นบรรทัดคำจำกัดความและบอกว่า "ไม่คาดหวัง", ""

ฉันจะทำให้การรับรู้นี้เป็นไวยากรณ์ทับทิมที่ถูกต้องได้อย่างไร ~/.vim/syntax/ruby.vimผมได้ปรับปรุงแล้ว


หมายเหตุ: ~/.vim/syntax/ruby.vimไม่เกี่ยวข้องกับการตรวจสอบไวยากรณ์ในไฟล์ มันสำหรับไวยากรณ์เน้น ดูrobots.thoughtbot.com/writing-vim-syntax-plugins
นาธานยาว

คำตอบ:


9

ระบุ ruby ​​executable สำหรับ Syntastic

การเรียก Syntastic ruby -cเพื่อตรวจสอบไวยากรณ์ของไฟล์ดังนั้นข้อผิดพลาดที่แสดงขึ้นอยู่กับทับทิมรุ่นที่ใช้

คุณสามารถชี้ไปที่สิ่งที่คุณต้องการใช้เช่นนี้:

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

หมายเหตุ:ในเวอร์ชันที่ใหม่กว่าของ Syntastic:

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

$ type rubyจะบอกให้คุณทราบว่า executable Ruby ปัจจุบันของคุณอยู่ที่ไหน ตัวติดตั้ง Ruby มีแบบแผนของตัวเองเกี่ยวกับที่วางไบนารีของพวกเขา เช่น:

  • ruby-installทำให้การติดตั้ง ruby ใน~/.rubiesและรุ่นที่เฉพาะเจาะจงที่เส้นทางเช่น~/.rubies/ruby-2.2.0/bin/ruby
  • RVMทำให้การติดตั้งทับทิมใน~/.rvm/rubiesและรุ่นที่เฉพาะเจาะจงที่เส้นทางเช่น~/.rvm/rubies/ruby-2.2.0/bin/ruby

FYI: ถ้าคุณใช้ rvm น่าจะเป็นlet g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
เบ็น

@ จุดที่ดี - คำตอบอัพเดท
นาธานลอง

3
สำหรับ syntastic รุ่นใหม่กว่าคือ:let g:syntastic_ruby_mri_exec='path/to/ruby/executable'
RantriX

1
หากคุณกำลังใช้ rbenv คุณควรจะทำlet g:syntastic_ruby_exec = '~/.rbenv/shims/ruby'เช่นนั้นเมื่อรุ่นทับทิมเปลี่ยนไปควรจะรับมันโดยอัตโนมัติ
Thermatix

ดี @Thermatix .. ฉันใช้system("rbenv which ruby")ใน. vimrc ของฉัน
rthbound

4

ใช้ terminal macvim ฉันยังมีปัญหานี้ซึ่งประกอบไปด้วยความจริงที่ว่าฉันใช้ zsh ซึ่งด้วยเหตุผลบางอย่างไม่เคารพไบนารี rvm ที่ฉันให้ syntastic ฉันรู้ว่าเส้นทางของฉันที่ไม่ถูกต้องเมื่อทำงาน!echo $PATHใน terminal macvim ฉันมีเส้นทางของระบบหลายต่อท้ายที่ด้านบนที่ไม่ได้อยู่ในเปลือกปกติของฉันยังคงทำให้ MRI เริ่มต้นโหลด

ในการแก้ไขปัญหานี้ฉันไม่จำเป็นต้องระบุตัวตรวจสอบไวยากรณ์เลยใน. vimrc ของฉันอย่างไรก็ตามฉันต้องอัปเดตวิธีการเริ่ม zsh ใช้เธรดที่: http://vim.1045645.n5.nabble.com/MacVim-and-PATH-td3388705.htmlฉันสิ้นสุดการทำงานsudo mv /etc/zshenv /etc/zprofileและตอนนี้ทุกอย่างทำงานและเส้นทางของฉันถูกต้องใน mvim สิ่งนี้ควรแก้ไขปัญหาของการอัพเดต syntastic เมื่อติดตั้ง ruby ​​version ใหม่ผ่าน rvm


นี่คือการแก้ไขที่แท้จริง! ปัญหาคือเนื่องจากมีข้อแม้กับ zsh ติดตั้งผ่านการชงใน OSX
Jikku Jose

คำถามแบบสุ่ม - ไม่ใช่ "terminal macvim" เพียงแค่เป็นกลุ่ม? คุณได้รับประโยชน์อะไรบ้างจากการใช้ Macvim ใน terminal มากกว่าการใช้ vim แบบธรรมดา?
Nick

0

สำหรับโครงการ Rails

  • ตั้งค่าเวอร์ชัน ruby ​​ใน.ruby-versionไฟล์ที่รูทโปรเจ็กต์
  • และเริ่มเป็นกลุ่มของคุณจากโครงการราก

Syntastic จะทำการตรวจสอบไวยากรณ์กับทับทิมรุ่นที่ระบุ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.