2

我正在使用 Syntastic 插件。我有一些文件有一些我无法更改的错误(警告)。当我打开一个带有错误消息的文件,然后按 :q 退出文件(缓冲区)时,错误消息仍然可见(另一个缓冲区),所以我必须按两次 :q 才能在编辑文件时完全退出。

那么,如何对一个文件按一次 :q 一次,该文件的缓冲区包含我的文件,另一个缓冲区(位置列表)包含 Syntastic 错误?我搜索了一下,关闭位置列表的命令是:lcl

当我用 :q 退出缓冲区时,如果该缓冲区的位置列表处于活动状态,我想用其中的位置列表关闭它,调用 :lcl。我正在阅读一些autocmd BufLeaveBufWinLeave尝试为此创建映射,但我不知道两者之间的区别。有人能帮我吗?

记住,:w, :q, :q!, :wq一切都应该按预期工作。

4

2 回答 2

3

即使没有错误窗口,lcl 也可以工作,您可以将 q 映射到 lcl 和 q

cnoremap q<cr> \|lcl\|q<cr>

正如所建议的那样,缩写似乎更好

cabbrev q lcl\|q

(注意 | 之前的 \,没有它的缩写然后退出)

于 2010-11-09T13:53:20.033 回答
1

我意识到这个问题已经过时了,而且答案在不久前就被接受了。我尝试使用接受的答案,但它似乎不再起作用。

但是,如果其他人遇到此问题,我确实从这个问题中找到了解决方法。

基本上,使用脚本检查是否还有其他剩余的窗口打开,如果最后剩余的窗口是位置列表,请退出。

:autocmd WinEnter * if &buftype ==# 'quickfix' && winnr('$') == 1 | quit | endif

我认为这可能并不理想,但同时运作良好。

于 2015-08-24T17:34:38.067 回答