为什么Syntastic不能捕获JSON错误?

15

我刚刚为Syntastic添加了jsonlint,但它没有检测到任何语法错误。对于Python来说,flake8一直运行良好,但没有jsonlint。下面是我的 .vimrc 的相关部分,在那里我相信我已经准备好了一切,可以使这个新的检查器工作。

.vimrc

let g:syntastic_python_checkers=['flake8']
let g:syntastic_python_flake8_args = '--ignore="E501"' " ignore long lines
let g:syntastic_json_checkers=['jsonlint']

" Better :sign interface symbols
let g:syntastic_error_symbol = '✗'
let g:syntastic_warning_symbol = '!'

jsonlint 是什么

/usr/local/bin/jsonlint

你说的“我刚试图添加jsonlint”是什么意思?它已经存在了。 - romainl
@romainl: 我的意思是:“我已经成功添加了jsonlint(软件包),并配置了我的.vimrc以使用jsonlint作为检查器,但即使我打开一个包含无效JSON的文件,我也没有看到任何错误或警告。” 有什么想法为什么会发生这种情况? - Brian Dant
你可以尝试的一件事是:备份你的.vim文件夹,复制一份,然后删除除了syntastic和它所需的设置之外的所有内容。如果错误不再出现,至少你已经更接近答案了。如果有帮助的话,syntastic可以处理我的json文件,所以它应该也能为你工作。另外,当你运行像:!jsonlint %这样的命令时会发生什么?你确定它在你的路径中吗? - Jeff Tratner
我的意思是,“它已经存在了”,这意味着你不需要在 ~/.vimrc 文件中添加任何内容,而 syntastic 就可以与 *.json 文件一起工作。 - romainl
@JeffTratner:which jsonlint 告诉我它在我的路径上,对吗?(我问题的最后一部分展示了 which jsonlint 的输出) - Brian Dant
1个回答

10

我遇到了同样的问题。 默认情况下,Vim会将json文件的文件类型设置为javascript。

:setfiletype json
:SyntasticCheck

7
可以在你的 .vimrc 中使用 au BufRead,BufNewFile *.json set filetype=json,以确保 .json 文件自动分配到正确的类型。 - El Yobo
3
在Ubuntu 14.04上,我不得不执行“sudo npm -g install jsonlint”才能使此功能正常工作。 这是Syntastic所期望的“jsonlint”。 Ubuntu软件包“python-demjson”也安装了一个名为“jsonlint”的程序,但它不能与Syntastic一起使用。 - Adam Monsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接