如何创建一个键映射来打开和关闭Vim中的quickfix窗口

Has*_*sek 6 vi vim

如果我使用:lopen,Vim打开quickfix窗口,如果我:lcl在窗口上使用有错误(或quickfix窗口本身),它会关闭它.

我想要做的.vimrc是创建一个打开quickfix的地图,如下所示:

nnoremap <F2> :lopen 10<CR>
Run Code Online (Sandbox Code Playgroud)

但是当我F2再次按下它时会关闭它:lcl.

有没有办法知道quickfix窗口是否打开然后执行:lcl

Doo*_*nob 6

在足够新的 vim 版本(getwininfo可用的地方)中,尝试:

function! ToggleQuickFix()
    if empty(filter(getwininfo(), 'v:val.quickfix'))
        copen
    else
        cclose
    endif
endfunction

nnoremap <silent> <F2> :call ToggleQuickFix()<cr>
Run Code Online (Sandbox Code Playgroud)

定制,

  • 要在垂直窗格中打开窗口, vertical copen
  • 对于位置列表(而不是快速修复),将copen/替换ccloselopen/ lclose,并替换v:val.quickfixv:val.loclist.)