2012-06-25 14 views
6

:lopenを使用すると、Vimはクイックフィックスウィンドウを開き、:lclをエラーのあるウィンドウ(またはクイックフィックスウィンドウ自体)で使用すると、 。キーマップを作成してVimのクイックフィックスウィンドウを開く方法

nnoremap <F2> :lopen 10<CR> 

が、私は再びF2を押したときに、それは:lclを使用して、それを閉じます:私は私の.vimrcで何をしたいのか

は次のようにクイックフィックスを開き、マップを作成することです。

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

答えて

4

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

+0

これはまさに私が感謝する必要があるものです。それでもプラグインを必要とせずに少し簡単にしたいと思っていました。 +1の案内、スクリプトは私自身の答えを作成するのに役立ちました:) – Hassek

+0

プラグインには2つの機能があります。コードを 'vimrc'にコピーすることができます。 – kev

+0

それは本当です、それでも私はなぜそれほど複雑になるのか分かりません。迅速な回答btwありがとう! – Hassek

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はそう動作しません。私はキャッチしようとすると、ウィンドウが開き、変数が作成されます。そうでなければそれを閉じます。

クールなことは、このアプローチがあなたがトグルしたいすべてのものに使用できるということです。

+0

このマッピングでクイックフィックスウィンドウを開くだけであれば問題ありません。しかし、クイックフィックスウィンドウが他の手段(autocmds、その他のプラグインなど)で開かれているときには、グローバル状態変数が機能しないことに留意してください。 –

+0

trueの場合、F2を2回押す必要があります。クイックフィックスのウィンドウが開いているかどうかを尋ねる方法があると思います – Hassek

関連する問題