使用:q,q!完全退出位置列表(LCL)以及由语法创建的主要缓冲区。或:WQ!在vim
题
我正在使用语法插件。我有一些我无法更改的文件(警告)。当我打开一个带有错误消息的文件时,我退出文件(缓冲区)按:q,错误消息仍然可见(另一个缓冲区),因此我必须按:q两次在编辑文件时完全退出。
那么,如何使用包含我的文件的缓冲区和另一个缓冲区(位置列表)的文件来按下:q一次,包含语法错误?我已经搜索了一点,关闭位置列表的命令为 :lcl.
当我退出使用:Q的缓冲区时,如果该缓冲区的位置列表处于活动状态,我想将其与内部的位置列表关闭,呼叫:lcl。我正在读一些 AutoCMD BufLeave
和 BufWinLeave
并尝试为此创建映射,但我不知道两者之间的区别。有人能帮我吗?
记住, :w, :q, :q!, :wq
都应该按预期工作。
解决方案
作为LCL的工作,即使没有错误窗口,也可以将Q映射到LCL和Q
cnoremap q<cr> \|lcl\|q<cr>
正如建议的缩写似乎更好
cabbrev q lcl\|q
(请注意 |之前的,没有它进行缩写,然后退出)
其他提示
我意识到这个问题是古老的,答案是在某个时候被接受的。我尝试使用接受的答案,但似乎不再起作用。
但是我确实从 这个问题, ,其他人应该遇到这个问题。
基本上,使用脚本检查是否还有其他剩余的窗口打开,以及最后一个剩下的窗口是否为位置列表,请退出。
:autocmd WinEnter * if &buftype ==# 'quickfix' && winnr('$') == 1 | quit | endif
我认为这可能不是理想的选择,但同时效果足够好。
不隶属于 StackOverflow