Syntastic이 새로운 Ruby 구문을 인식하도록하려면 어떻게해야합니까? 사용하는 경우 : def distance(from:, to:) #

Vim에서 Syntastic을 사용하고 있으며 최신 Ruby 구문을 오류로 강조 표시합니다. 예를 들어, 다음과 같이 필수 키워드 인수 (Ruby 2.1에 도입)를 사용하는 경우 :

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

… 정의 라인을 강조 표시하고 “예기치 않은 ‘,'”라고 말합니다.

이것을 유효한 루비 구문으로 인식하려면 어떻게해야합니까? 이미 업데이트했습니다 ~/.vim/syntax/ruby.vim.



답변

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

답변

나는 또한 내가 어떤 이유로 한, 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을 업데이트하는 문제를 해결해야합니다.


답변

Rails 프로젝트의 경우.

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

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