Cygwin で Vim を使用していますが、最近、いくつかのプラグインをインストールすることにしました。Vundle をインストールして vim-airline プラグインを動作させることができましたが、何らかの理由で Syntastic を動作させることができません。
私のvimrc:
set nocompatible
filetype off
set rtp+=c:/cygwin64/home/USERNAME/.vim/bundle/Vundle.vim
call vundle#begin('c:/cygwin64/home/USERNAME/.vim/bundle/')
Plugin 'VundleVim/Vundle.vim'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'vim-syntastic/syntastic'
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
call vundle#end()
filetype plugin indent on
Syntastic は、実行時に Vim 内から更新されるため、適切にダウンロードされたと思い:PluginInstall
ます:PluginUpdate
。
上記の .vimrc で .py ファイルを開くと、次のエラーが表示されます。
syntastic: error: checker python/python returned abnormal status 2
スニッフィングから、Vim 内から、以下が構文上の問題を診断するのに役立つ可能性があることがわかりました。
:let g:syntastic_debug=3
:w
:mes
:mes
返品の一部
syntastic: 73.033500: checker output: ['C:\Python36\python.exe: can''t open file ''/home/USERNAME/.vim/
bundle/syntastic/syntax_checkers/python/compile.py'': [Errno 2] No such file or directory', '']
もう少し掘り下げた後、シェルスラッシュ変数が設定されていない可能性があることがわかりました。これにより、WindowsファイルパスがUNIXファイルパスとして解釈されます(またはその逆)。他の人は、 :mes リターンのこの部分が役立つと感じました:
syntastic: 72.928500: &shell = '/bin/bash', &shellcmdflag = '-c', &shellpipe = '2>&1| tee', &shellqu
ote = '', &shellredir = '>%s 2>&1', &shelltemp = 1, &shellxquote = '', &autochdir = 0, &shellxescape
= ''
.vimrc に 1 行追加しましたが、set shellslash
保存して vim を再度開いても何も変わりませんでした (set rtp の前、シンタスティック プラグイン呼び出しの後、最後など、いくつかの異なる場所に追加してみました)。同じエラーが発生しました。もう一度 :mes のプロンプトを実行したところ、シェルスラッシュ変数がリストされていませんでした。出力は上記とまったく同じように見えました。:set shellslash
Vim 内からも試してみましたが、エラーはスローされませんでしたが、問題は残りました。
最後に考えられたのは、Vim が別の .vimrc ファイルを読み込んでいたため、:scriptnames を実行したところ、編集中の .vimrc の場所が一番上の行に返されたということでした。
では、shellslash を設定するにはどうすればよいでしょうか。これにより、Cygwin 上の Vim で Syntastic が適切に動作する可能性があると思います。