使用Eslint时可悬挂Neomake


11

我一直在遵循以下两个教程来尝试设置eslintNeomake

所以我有以下最低限度 init.vim

call plug#begin('~/.vim/plugged')

Plug 'neomake/neomake'

call plug#end()

autocmd! BufWritePost,BufEnter * Neomake
let g:neomake_verbose=3
let g:neomake_open_list = 2
let g:neomake_javascript_enabled_makers = ['eslint']

" neomake
nmap <Leader><Space>o :lopen<CR>      " open location window
nmap <Leader><Space>c :lclose<CR>     " close location window
nmap <Leader><Space>, :ll<CR>         " go to current error/warning
nmap <Leader><Space>n :lnext<CR>      " next error/warning
nmap <Leader><Space>p :lprev<CR>      " previous error/warning

问题是当我保存Neomake时出现以下消息:

Neomake: Starting: eslint -f compact /home/otis/Developer/test/index.js

如果我nvim像这样手动运行该命令:

eslint -f compact /home/otis/Developer/test/index.js

我收到以下输出:

/home/otis/Developer/test/index.js: line 1, col 1, Error - Unexpected var, use let or const instead. (no-var)
/home/otis/Developer/test/index.js: line 1, col 5, Error - 'a' is defined but never used. (no-unused-vars)
/home/otis/Developer/test/index.js: line 1, col 9, Error - Strings must use singlequote. (quotes)

3 problems

好的意味着eslint工作正常,但我什么都没收Neomake

如果我运行:lopen,则会弹出窗口,然后立即关闭,如下所示:

窗口打开然后关闭

我的vim/ nvim知识有些基础,因此请在回答中明确说明。


试图改变自己autocmd! BufWritePost,BufEnter * Neomake,以augroup neomake/ au!/ autocmd BufWritePost * Neomake/ augroup END BufEnter没有太多的意义
Yonsy索利斯

实际上,这可能是“快速修复”窗口为空的原因。在屏幕上,当您运行:lopenNeocast 时,由于BufEnter的autocmd,该缓冲区将运行该缓冲区。@Yonsy代码段很好,但应仅限于JavaScript文件:augroup neomake/ au!/ autocmd BufWritePost *.js Neomake/ augroup END
grodzik 2016年

Answers:


1

评论中的一些[内容经过精心编辑]:

实际上,这可能是Quickfix窗口为空的原因。在运行时:lopen,在屏幕上投射时,由于BufEnter的autocmd,Neomake将为该缓冲区运行。此外,它应仅限于JavaScript文件:

augroup neomake
  au!
  autocmd BufWritePost *.js Neomake
augroup END

0

这不能完全回答您的问题,但是我发现neomake与eslint_d一起使用效果更好。它具有很好的副作用,它也应该更快地完成起毛。

首先,您必须全局安装eslint_d(但它似乎仍然可以拾取任何本地.eslintrc文件):

npm install -g eslint_d

然后将neomake的以下配置添加到init.vim/中.vimrc

let g:neomake_javascript_enabled_makers = ['eslint_d']

对我来说,这是我所需要的,在重新启动neovim并打开运行的javascript文件后,出现:Neomake了eslint警告。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.