2012-06-25 15 views
6

Jeśli użyję :lopen, Vim otworzy okno quickfix, a jeśli użyję :lcl w oknie z błędami (lub samym oknem quickfix), to je zamknie .Jak utworzyć mapę klawiszy do otwierania i zamykania okna quickfix w Vim

Co chcę zrobić w moim .vimrc jest stworzenie mapy, który otwiera quickfix takiego:

nnoremap <F2> :lopen 10<CR> 

ale po naciśnięciu F2 ponownie zamyka go za pomocą :lcl.

Czy istnieje sposób sprawdzenia, czy okno quickfix jest otwarte, a następnie wykonanie :lcl?

Odpowiedz

4
+0

Dokładnie to, czego potrzebuję, dzięki. Nadal chciałem czegoś prostszego bez potrzeby używania wtyczki. +1 za wskazówki, skrypt pomógł mi stworzyć własną odpowiedź :) – Hassek

+0

Wtyczka ma dwie funkcje. Możesz skopiować kod do ciebie 'vimrc'. – kev

+0

cóż, to prawda, nadal nie rozumiem, dlaczego jest to tak skomplikowane. Dzięki za szybką odpowiedź btw! – Hassek

2

Oto kolejny sposób na to, prawdopodobnie pomijając pewne drastyczne szczegóły, ale to działa:

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> 

Jeśli nie ma błędów lopen nie będzie działać tak Próbuję to złapać, na wypadek gdyby otworzyło się okno i stworzyło zmienną. a jeśli nie, po prostu zamyka.

Fajną rzeczą jest to, że to podejście może być używane do wszystkiego, co chciałbyś przełączyć.

+0

Tak długo, jak tylko otworzysz okno quickfix przez to mapowanie, to jest w porządku. Należy jednak pamiętać, że zmienna stanu globalnego nie będzie działała po otwarciu okna quickfix innymi metodami (autocmds, inne wtyczki itp.). –

+0

true, w tym przypadku musiałbym dwukrotnie nacisnąć F2. Domyślam się, że istnieje sposób, aby zapytać, czy okno quickfix jest otwarte, to by to zrobiło – Hassek

Powiązane problemy