Syntastic이 새로운 Ruby 구문을 인식하도록하려면 어떻게해야합니까?


10

Vim에서 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 참조
Nathan Long

답변:


9

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현재 Ruby 실행 파일이 어디에 있는지 알려줍니다. 루비 인스톨러는 바이너리를 어디에 두어야하는지에 대한 자체 규칙을 가지고 있습니다. 예 :

  • ruby-install 은 다음 ~/.rubies과 같은 경로 에 루비 설치 및 특정 버전을 넣습니다.~/.rubies/ruby-2.2.0/bin/ruby
  • RVM 은 다음 ~/.rvm/rubies과 같은 경로 에 루비 설치 및 특정 버전을 설치합니다.~/.rvm/rubies/ruby-2.2.0/bin/ruby

참고 : rvm을 사용하는 경우let g:syntastic_ruby_exec = '~/.rvm/rubies/ruby-2.2.0/bin/ruby'
Ben

@Ben good point-업데이트 된 답변
Nathan Long

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

나는 또한 내가 어떤 이유로 한, zsh을을 사용했다는 사실에 의해 혼합 된이 문제를 가지고 있었다 터미널 macvim를 사용 하지 내가 syntastic 준 이진 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에서 정확합니다. 이것은 rvm을 통해 새로운 루비 버전을 설치할 때 syntastic을 업데이트하는 문제를 해결해야합니다.


이것은 실제 수정입니다! 문제는 OSX에서 brew를 통해 zsh를 설치 한 경우 주의해야 합니다.
Jikku Jose

무작위 질문- "터미널 macvim"이 단지 vim이 아닙니까? 일반 vim을 사용하는 것보다 터미널에서 Macvim을 사용하면 어떤 이점이 있습니까?
Nick

0

Rails 프로젝트의 경우.

  • .ruby-version프로젝트 루트 의 파일에 루비 버전을 설정하십시오 .
  • 그리고 프로젝트 루트에서 vim을 시작하십시오.

Syntastic은 지정된 루비 버전으로 구문 검사를 수행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.