有一个vim映射来显示python代码错误。现在我只有在出现错误时才需要显示它

时间:2015-02-20 22:27:37

标签: python vim

在我的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

2 个答案:

答案 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它。快速谷歌展示pylintPython - 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>
  • &#34; Vim Way&#34;通常避免从插入模式执行命令

清理版本的映射:

nnoremap <f5> :w<cr>:silent make<cr>:cwindow<cr>

如需更多帮助,请参阅:

:h :make
:h 'makeprg'
:h :compiler
:h :cwindow
:h :compiler
:h write-compiler-plugin