Syntastic关闭错误窗口和原始文件窗口

6

我从GitHub安装了Syntastic,现在正在尝试使用Syntastic来检查Perl语法错误(计划在不久的将来用于Python)。当我使用“:quit”或“:q”时,只有原始文件窗口关闭。错误窗口没有关闭。以下是我的.vimrc文件的一部分:

execute pathogen#infect()  
set statusline+=%#warningmsg#  
set statusline+=%{SyntasticStatuslineFlag()}  
set statusline+=%*  
let g:syntastic_perl_checkers = ['perl']  
let g:syntastic_python_checkers = ['pylint']  
let g:syntastic_enable_perl_checker = 1  
let g:syntastic_always_populate_loc_list = 1  
let g:syntastic_auto_loc_list = 1  
let g:syntastic_check_on_open = 1

由于我对Vim脚本非常陌生,因此我想知道当我使用“:quit”或“:q”命令关闭原始文件窗口时,如何关闭两个窗口,即错误窗口和原始文件窗口。


:q 关闭当前窗口,而不是 Vim。 - romainl
3个回答

5
那是Vim的正常行为,与Syntastic无关。 快速修复定位列表窗口可能包含对其他文件的引用,因此不能确定您在从源窗口退出时是否要完全离开Vim。
最简单的解决方案是使用:qa(全部退出)而不是:q。由于错误窗口不包含未持久化更改,因此这是安全的且不需要确认。
如果您对此感到烦恼,可以使用Vim的脚本功能来更改其行为:
:autocmd WinEnter * if &buftype ==# 'quickfix' && winnr('$') == 1 | quit | endif

每次窗口变化时,此功能会检查是否只剩下一个窗口,如果该窗口是快速修复/位置列表,则退出Vim。


实际上,主窗口中的:q确实会关闭两个窗口,这是syntastic的一个特性。但在错误窗口中不起作用,因为这样做不安全。在错误窗口中使用:q应该仍然会关闭错误窗口;它不能关闭错误窗口,这是一个bug。:) 我很快就会提交一个补丁。 - lcd047
@lcd047 不是这样的......主窗口中的:q 并不会 关闭两个窗口。错误窗口仍然保持打开状态。此外,错误窗口中的:q 也不会 关闭任何东西。两个窗口都保持打开状态。这种行为是否取决于特定的vim版本? - Nilesh Bhave
@Nilesh Bhave:根据Syntastic版本、与其他插件的交互以及缺陷的存在,它应该按照我所描述的方式运行。不幸的是,我之前提到的那个缺陷并不像我最初想象的那么容易修复。如果您有其他问题需要报告,请在问题跟踪器中进行。 - lcd047

4
尝试下面的命令:

3

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