10

を使用する:lopenと、Vimはクイックフィックスウィンドウを開き、:lclエラーのあるウィンドウ(またはクイックフィックスウィンドウ自体)で使用すると、ウィンドウを閉じます。

私がやりたいのは.vimrc、次のようなクイックフィックスを開くマップを作成することです。

nnoremap <F2> :lopen 10<CR>

しかし、もう一度押すF2と、を使用して閉じます:lcl

クイックフィックスウィンドウが開いているかどうかを確認してから実行する方法はあり:lclますか?

4

4 に答える 4

8

十分に新しいバージョンのvim(getwininfo利用可能な場合)で、次のことを試してください。

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

nnoremap <silent> <F2> :call ToggleQuickFix()<cr>

カスタマイズ、

  • 垂直ペインでウィンドウを開くには、vertical copen
  • (クイックフィックスの代わりに)ロケーションリストの場合は、copen/ccloselopen/に置き換えlclose、およびv:val.quickfixに置き換えv:val.loclistます。)
于 2020-07-29T20:40:50.633 に答える
5

vimプラグインがあります:https ://github.com/milkypostman/vim-togglelist

于 2012-06-26T00:26:30.483 に答える
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は機能しないので、それをキャッチしてみます。エラーがある場合は、ウィンドウを開いて変数を作成します。そうでない場合は、それを閉じるだけです。

すばらしいのは、このアプローチを切り替えたいすべてのものに使用できることです。

于 2012-06-26T03:49:05.963 に答える
0

https://github.com/liuchengxu/vim-clap/を使用できます

と:

nnoremap <F2> :Clap loclist<CR>
于 2020-03-12T11:17:24.820 に答える