在我的vimrc中有这些:
set makeprg=python\ %
map <F5> :w<CR> :silent make <bar> copen<CR>
imap <F5> <Esc>:w<CR> :silent make <bar> copen<CR>i
它有效,但如果没有错误,如果quickfix窗口没有打开,我希望它更好。我发现了一些信息(这里有关于klang编译器的一个非常相似的问题)但是我不太了解这些东西,有人可以帮忙吗? TY。
编辑:如果没有错误,quickfix窗口是空的,所以我想这是检查其内容的问题,但这离我有限的vim-fu
答案 0 :(得分:1)
使用像vim-flake8这样的专用插件可能要容易得多。它可以配置为检查每个缓冲区保存的Python语法,因此您不需要滥用'make'程序设置:
autocmd BufWritePost *.py call Flake8()
在快速修复窗口中打开错误,如果没有错误,则快速修复窗口无法打开。
编辑:...但是如果你坚持只使用基于vimrc的技巧(更便携,你是对的),那么你必须删除copen
部分您的命令,因为这是强制在每次运行时打开快速修复窗口的原因:
map <F5> :w<CR> :silent make <bar><CR>
imap <F5> <Esc>:w<CR> :silent make <bar><CR>i
答案 1 :(得分:1)
您正在执行您的python代码而不是linting它。快速谷歌展示pylint和Python - check syntax and run script。如果你想要更重的手法,还有synstastic.vim。如果您想使用它,我已经创建了simple python compiler plugin。
要回答您的问题,您可以使用:cwindow
代替:copen
来仅在出现错误时打开quickfix list windown。
可选:通常的方法是在:autocmd
之后使用:cwindow
执行:copen
/ :make
。例如autocmd QuickFixCmdPost * cwindow
关于你的映射的一些想法:
map
成为nmap
*noremap
的一般经验法则,除非使用<Plug>
映射<bar>
清理版本的映射:
nnoremap <f5> :w<cr>:silent make<cr>:cwindow<cr>
如需更多帮助,请参阅:
:h :make
:h 'makeprg'
:h :compiler
:h :cwindow
:h :compiler
:h write-compiler-plugin