在syntastic中切换错误位置面板

29

如何设置一个键盘快捷键来切换vim中Syntastic错误位置列表面板。

:Errors - 显示位置面板

:lclose - 隐藏位置面板

我对VimScript非常陌生,如果有一种方式可以检查Location List Panel的可见性,那么这应该很容易做到。

2个回答

25

我不知道如何区分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>

你怎么看待快速修复面板?不确定文档是否提到了它。 - system64
1
@AkshayAurora :vimgrep:grep:make 等命令都使用 quickfix 列表。可以通过 :copen 命令查看它。文档中也有提到,:vimgrep:h quickfix 第二段的示例。这些命令都有对应的位置列表命令::lvimgrep:lgrep:lmake 等等。 - ZyX
谢谢。然而,当使用 gvim -p 编辑多个文件时,每次移动到标签页外再返回时,位置列表都会重新出现。无论其可见性状态还是高度都不是持久的。无论如何,我最终将 g:syntastic_auto_loc_list 设置为 0,现在我手动激活它,所以我不介意。 - Jérôme

8
根据 Syntastic 帮助,关闭 Syntastic 错误窗口的命令是:
:SyntasticReset

最简洁的解决方案。 - markroxor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接