2012-06-25 22 views
6

Se utilizzo :lopen, Vim apre la finestra di aggiornamento rapido e se utilizzo :lcl nella finestra con errori (o la finestra di aggiornamento rapido), lo chiude .Come creare una mappa chiave per aprire e chiudere la finestra di aggiornamento rapido in Vim

Quello che voglio fare nella mia .vimrc è quello di creare una mappa che si apre il quickfix in questo modo:

nnoremap <F2> :lopen 10<CR> 

ma quando si preme di nuovo F2 si chiude utilizzando :lcl.

C'è un modo per sapere se la finestra di aggiornamento rapido è aperta e quindi eseguire il :lcl?

risposta

4
+0

Questo fa esattamente ciò di cui ho bisogno grazie. Comunque volevo qualcosa di più semplice senza la necessità di un plugin. +1 per la guida, la sceneggiatura mi ha aiutato a creare la mia risposta :) – Hassek

+0

Il plugin ha due funzioni. Puoi copiare il codice in te 'vimrc'. – kev

+0

beh questo è vero, ancora non capisco perché diventa così complicato. Grazie per la risposta rapida btw! – Hassek

2

Ecco un altro modo per farlo, probabilmente saltare alcuni dettagli scabrosi ma funziona:

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> 

Se non ci sono errori il lopen non funziona così Provo a prenderlo, nel caso ci sia, apre la finestra e crea una variabile. allora se non lo fa, lo chiude.

La cosa bella è che questo approccio può essere utilizzato per tutto ciò che si desidera attivare.

+0

Finché basta aprire la finestra del quickfix attraverso questa mappatura, va bene. Ma tieni a mente che la tua variabile di stato globale non funzionerà quando la finestra del quickfix viene aperta con altri mezzi (autocmds, altri plugin, ecc.) –

+0

true, in questo caso avrei bisogno di premere F2 due volte. Immagino ci sia un modo per chiedere se la finestra di quickfix è aperta, che farebbe l'affare – Hassek

Problemi correlati