我正在使用Syntastic插件。我有一些文件有一些我无法改变的错误(警告)。当我打开包含错误消息的文件时,我退出文件(缓冲区),按下:q,错误消息仍然可见(另一个缓冲区),所以我必须按:q两次以在编辑文件时完全退出。< / p>
那么,我如何按下:q只有一个包含我的文件的缓冲区和另一个包含Syntastic错误的缓冲区(位置列表)的文件?我搜索了一下,关闭位置列表的命令是:lcl。
当我使用:q退出缓冲区时,如果该缓冲区的位置列表处于活动状态,我想用位置列表关闭它,调用:lcl。我正在阅读一些autocmd BufLeave
和BufWinLeave
,并试图为此创建一个映射,但我不知道两者之间的区别。有人能帮助我吗?
记住,:w, :q, :q!, :wq
应该按预期工作。
答案 0 :(得分:3)
由于lcl工作即使没有错误窗口,您也可以将q映射到lcl和q
cnoremap q<cr> \|lcl\|q<cr>
如所建议的,缩写似乎更好
cabbrev q lcl\|q
(注意\之前的\,没有缩写然后退出)
答案 1 :(得分:1)
我意识到这个问题已经过时了,答案已经被接受了。我尝试使用已接受的答案,但它似乎不再起作用了。
但是,如果其他人遇到此问题,我会从this question找到解决方法。
基本上,使用脚本检查是否有其他剩余的窗口打开,如果剩下的最后一个窗口是位置列表,则退出。
:autocmd WinEnter * if &buftype ==# 'quickfix' && winnr('$') == 1 | quit | endif
我认为这可能不太理想,但在此期间效果还不错。