2017-06-21 71 views
0

我有vim的合成與eslint和jshint一起正確安裝。我更喜歡jshint的大部分我的JavaScript編程。但是,我開始學習React,並希望使用eslint合成(eslint具有卓越/合適的反應)。更改Vim的Syntastic使用基於文件擴展名的特定檢查器?

是否可以將vim設置爲使用* .js文件的jshint,以及* .jsx文件的eslint?

我看到:幫助合成檢查器,反應得到集中在JavaScript。鏈接短褲並不是我想要的,無論是。

+0

你可以試試'autocmd BufRead,BufNewFile * .jsx讓b:syntastic_checkers = ['eslint']'。這可能會或可能不會與'syntastic_check_on_open'一起工作,具體取決於Vim選擇運行'autocmd's的順序(順序不明確)。如果它仍然在運行時打開'jshint',則可能會爲'* .js'添加一個類似的'autocmd',並且未設置'g:syntastic_javascript_checkers'。 – lcd047

+0

謝謝你讓我回答@ lcd047! – bradleyhop

回答

-1

找到了!你非常接近@ lcd047,但是你的評論讓我走上了正確的道路!爲了使eslint只* JSX文件,把我的作品.vimrc如下:

au BufEnter *.jsx let b:syntastic_checkers = ['eslint']

在我的情況下,syntastic將使用jshint上的JavaScript在默認情況下,即使檢查者沒有在.vimrc設置。即使g:syntastic_javascript_checkers未被設置,或者即使它被設置爲jshint,即使設置了上述工作。

+0

'BufEnter'上的'autocmd'肯定不能用於'syntastic_check_on_open'。儘管如此,請隨時忽略我。 – lcd047

+0

@ lcd047,也許我發現了一個錯誤呢?我仍然得到如上所述的相同的行爲:JavaScript文件上的jshint和* .jsx文件上的eslint。我的vimrc中也有'g:syntastic_check_on_open = 1'。我通過npm在全球安裝了兩個檢查器。 作爲合成的主要貢獻者,我非常感謝您的幫助。原諒我,如果我看起來有點教學(這是我的老師培訓和我自己的經驗/興奮表現)。 – bradleyhop

+1

錯誤在於你理解應該發生的事情。 'check_on_open'在'BufRead'上運行,'BufRead'在'BufEnter'之前應用。 'b:syntastic_checkers'將會取消您在主動模式下運行'check_on_open'的_first_時間。 – lcd047