Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 如何检查syntastic';她现在的状况如何?_Vim_Syntastic - Fatal编程技术网

Vim 如何检查syntastic';她现在的状况如何?

Vim 如何检查syntastic';她现在的状况如何?,vim,syntastic,Vim,Syntastic,我今天用自制软件更新了node,这意味着所有的npm模块都被吹走了。这当然意味着jshint可执行文件(例如,通过npm安装-g jshint获得)不再存在,因此Syntastic只是默默地停止检查我的js文件中的语法 没过多久我就注意到了,但我想知道这一变化。我希望syntastic在命令状态行中以syntastic-cannotrunjshint的音调显示一些内容(最好是红色) 最简单的解决方案是编辑文件 syntastic/syntax_checkers/javascript/jshint

我今天用自制软件更新了node,这意味着所有的npm模块都被吹走了。这当然意味着
jshint
可执行文件(例如,通过
npm安装-g jshint
获得)不再存在,因此Syntastic只是默默地停止检查我的js文件中的语法


没过多久我就注意到了,但我想知道这一变化。我希望syntastic在命令状态行中以
syntastic-cannotrunjshint
的音调显示一些内容(最好是红色)

最简单的解决方案是编辑文件

syntastic/syntax_checkers/javascript/jshint.vim
并将功能从

function! SyntaxCheckers_javascript_jshint_IsAvailable()
    return executable('jshint')
endfunction


echohl将echo的高光颜色设置为hightlight组错误(很可能是红色,但可能不是)。然后它打印出保存时要打印的消息。但是,这不在状态行上

很不幸,Syntastic似乎缺乏报告丢失的跳棋的能力,其可见性无法达到预期。理想情况下,应该添加这样的功能。对于那些不准备修补Syntastic的人,一个可能的解决方法是打开调试,搜索已知有问题的字符串并对其发出警报。例如,用错误符号标记第一行,并在新缓冲区中调出日志。我将其添加到我的
.vimrc
中,如下所示

let g:syntastic_debug = 1

function! SyntasticCheckerNotFound()
  redir => messages
  silent messages
  redir END
  let pos = match(messages, "syntastic.*Checker.*is not available")
  if pos != -1
    new
    setlocal buftype=nofile
    put =messages
    sign place 1 line=1 name=SyntasticError buffer=1
"   goto pos
  endif
  let g:syntastic_debug = 0
endfunction

autocmd VimEnter <buffer> call SyntasticCheckerNotFound()
设g:syntastic_debug=1
功能!SyntasticCheckerNotFound()
重拨=>消息
无声信息
重拨端
让pos=match(消息“syntastic.*Checker.*不可用”)
如果位置!=-1.
新的
setlocal buftype=nofile
put=消息
签名位置1行=1名称=SyntasticError缓冲区=1
“转到pos
恩迪夫
设g:syntastic_debug=0
端功能
autocmd VimCenter调用SyntasticCheckerNotFound()

VimEnter
事件上运行上述函数时,它仅在vim启动时执行一次,并且仅在作为参数提供的第一个文件上执行。这远不是完美的,但它可以足够好,以减少确定由于缺少检核器而导致的断绒所需的时间和精力。

更好的方法应该是更新y我们的东西小心地避免了这种情况。这是相当史诗般的,但它不是太可移植。我只是希望syntastic有一个日志,它可以编写异常事件(比如不找到jshint)to@StevenLu你应该要求Syntastic的开发人员或维护人员添加此功能。太好了!我现在使用ALE(而不是Syntastic).有趣的是,同样的情况也适用:丢失的跳棋不会被报告
let g:syntastic_debug = 1

function! SyntasticCheckerNotFound()
  redir => messages
  silent messages
  redir END
  let pos = match(messages, "syntastic.*Checker.*is not available")
  if pos != -1
    new
    setlocal buftype=nofile
    put =messages
    sign place 1 line=1 name=SyntasticError buffer=1
"   goto pos
  endif
  let g:syntastic_debug = 0
endfunction

autocmd VimEnter <buffer> call SyntasticCheckerNotFound()