如果我使用:lopen
,Vim会打开quickfix窗口,如果我在窗口上使用:lcl
有错误(或quickfix窗口本身),它会关闭它。
我想在我的.vimrc
中做的是创建一个打开quickfix的地图,如下所示:
nnoremap <F2> :lopen 10<CR>
但是当我再次按 F2 时,它会使用:lcl
关闭它。
有没有办法知道quickfix窗口是否打开然后执行:lcl
?
答案 0 :(得分:4)
答案 1 :(得分:4)
在足够新的vim版本(其中getwininfo
可用)中,尝试:
function! ToggleQuickFix()
if empty(filter(getwininfo(), 'v:val.quickfix'))
copen
else
cclose
endif
endfunction
nnoremap <silent> <F2> :call ToggleQuickFix()<cr>
(对于位置列表,将copen
/ cclose
替换为lopen
/ lclose
,将v:val.quickfix
替换为v:val.loclist
。)>
答案 2 :(得分:2)
这是另一种方法,可能会跳过一些血腥的细节,但它有效:
function! ToggleQuickFix()
if exists("g:qwindow")
lclose
unlet g:qwindow
else
try
lopen 10
let g:qwindow = 1
catch
echo "No Errors found!"
endtry
endif
endfunction
nmap <script> <silent> <F2> :call ToggleQuickFix()<CR>
如果没有错误,lopen将无法工作,所以我尝试捕获它,以防它打开窗口并创建一个变量。然后,如果它不,它只是关闭它。
很酷的是,这种方法可用于您想要切换的所有内容。
答案 3 :(得分:0)