适用于Vim的JS兼容性检查器(Syntastic | YouCompleteMe)?

5

我曾经在终端的vim中使用Syntastic,但是安装了YouCompleteMe后发现问题。问题在于YouCompleteMe不允许Syntastic检测错误,但是我需要这两个插件。

YouCompleteMe有一些错误检查工具,但我无法发现如何使它能够检查JavaScript错误。

我该怎么解决呢?

Syntastic的.vimrc文件:

let g:syntastic_always_populate_loc_list = 0
let g:syntastic_auto_loc_list = 2
let g:syntastic_loc_list_height = 8
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 1
let g:syntastic_aggregate_errors = 1
let g:syntastic_id_checkers = 1
let g:syntastic_error_symbol = "✗"
let g:syntastic_warning_symbol = "⚠"

set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

let g:syntastic_javascript_checkers = ['jslint', 'jsonlint', 'gjslint']
let g:syntastic_html_tidy_exec = 'tidy5'

YCM的.vimrc文件:

" YouCompleteMe and UltiSnips compatibility, with the helper of supertab
let g:ycm_key_list_select_completion   = ['<A-¶>', '<A-Space>', '<Down>']
let g:ycm_key_list_previous_completion = ['<A-§>', '<A-π>', '<Up>']

" You Complete Me Options
let g:ycm_show_diagnostics_ui = 0
let g:ycm_enable_diagnostic_highlighting = 0
let g:ycm_enable_diagnostic_signs = 0
let g:ycm_show_diagnostics_ui = 0
let g:ycm_open_loclist_on_ycm_diags = 0
let g:ycm_complete_in_comments = 0
let g:ycm_complete_in_strings = 0
let g:ycm_collect_identifiers_from_comments_and_strings = 0
let g:ycm_collect_identifiers_from_tags_files = 1

:SyntasticInfo 输出

> Syntastic version: 3.7.0-31 (Vim 704, Darwin) 
> Info for filetype: javascript
> Global mode: active 
> Filetype javascript is active 
> The current file will be checked automatically 
> Available checkers: -
> Currently enabled checkers: -

我不知道为什么可用和启用的检查器消失了?在安装 YCM 前,它们是存在并且可用的!

1
YCM禁用了Syntastic对C、C++、Objective-C和Objective-C++文件的检查器(并有一个选项可以关闭该行为)。 对于其他所有内容,YCM仅执行代码完成,而不是检查,并且可以与Syntastic和平共处。 至于在Syntastic中启用JavaScript linters,您考虑阅读手册了吗? 可怕的想法,我知道。 - lcd047
@lcd047 我已经阅读了文档,但实际上并没有找到“关闭”选项。我添加了一些let变量来禁用YCM选项,无论显示错误与否,但Syntastic仍然无法工作。我还阅读了Syntastic文档,但一切正常。我注意到使用:SyntasticInfo时它无法识别检查器。请查看上面的输出,我将更新问题。 - Stevens Garcia
这不是调试Syntastic的好地方。问题跟踪器在这里 - lcd047
1个回答

0
你可以使用Neovim而不是Vim,再加上ALE插件以及可选的LanguageClient-neovim插件。
为了让后者正常工作,你需要运行npm install -g javascript-typescript-langserver
这样就可以通过JavaScript语言服务器实现异步linting(ALE)和异步完成/ linting功能。

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