如何设置一个键盘快捷键来切换vim中Syntastic错误位置列表面板。
:Errors
- 显示位置面板
:lclose
- 隐藏位置面板
我对VimScript非常陌生,如果有一种方式可以检查Location List Panel的可见性,那么这应该很容易做到。
我不知道如何区分quickfix和location lists,但是建议关闭它并检查显示的窗口数量是否已更改,而不是检查location list是否已显示:
function! ToggleErrors()
let old_last_winnr = winnr('$')
lclose
if old_last_winnr == winnr('$')
" Nothing was closed, open syntastic error location panel
Errors
endif
endfunction
* 如果您对解决方案满意,将尝试lclose
,如果有任何激活的缓冲区,请检查使用buftype quickfix显示的缓冲区:
function! ToggleErrors()
if empty(filter(tabpagebuflist(), 'getbufvar(v:val, "&buftype") is# "quickfix"'))
" No location/quickfix list shown, open syntastic error location panel
Errors
else
lclose
endif
endfunction
请注意,lclose
不会关闭 quickfix 列表。
要使用 Ctrl-e 切换错误面板,可以使用以下映射。
nnoremap <silent> <C-e> :<C-u>call ToggleErrors()<CR>
:vimgrep
、:grep
、:make
等命令都使用 quickfix 列表。可以通过:copen
命令查看它。文档中也有提到,:vimgrep
是:h quickfix
第二段的示例。这些命令都有对应的位置列表命令::lvimgrep
、:lgrep
、:lmake
等等。 - ZyXgvim -p
编辑多个文件时,每次移动到标签页外再返回时,位置列表都会重新出现。无论其可见性状态还是高度都不是持久的。无论如何,我最终将g:syntastic_auto_loc_list
设置为0
,现在我手动激活它,所以我不介意。 - Jérôme