2012-06-25 10 views
6

में क्विकफ़िक्स विंडो को खोलने और बंद करने के लिए एक प्रमुख मानचित्र कैसे बनाएं, यदि मैं :lopen का उपयोग करता हूं, तो विम त्वरितफिक्स विंडो खोलता है, और यदि मैं त्रुटियों वाले विंडो पर :lcl का उपयोग करता हूं (या क्विकफ़िक्स विंडो स्वयं), तो यह बंद हो जाता है ।विम

मैं अपने .vimrc में क्या करना चाहते हैं क्या एक नक्शा इस तरह QuickFix खुलती बनाने के लिए है:

nnoremap <F2> :lopen 10<CR> 

लेकिन जब मैं फिर से F2 प्रेस यह :lcl का उपयोग कर इसे बंद कर देता है।

क्या यह जानने का कोई तरीका है कि क्या Quickfix विंडो खुलती है और फिर :lcl निष्पादित करें?

उत्तर

4

वहाँ एक vim प्लगइन है: https://github.com/milkypostman/vim-togglelist

+0

यह वही करता है जो मुझे धन्यवाद चाहिए। फिर भी मैं प्लगइन की आवश्यकता के बिना थोड़ा सा सरल चाहता था। मार्गदर्शन के लिए +1, स्क्रिप्ट ने मुझे अपना उत्तर बनाने में मदद की :) – Hassek

+0

प्लगइन में दो कार्य हैं। आप कोड को 'vimrc' में कॉपी कर सकते हैं। – kev

+0

अच्छी तरह से यह सच है, फिर भी मुझे नहीं लगता कि यह इतना जटिल क्यों हो जाता है। त्वरित उत्तर बीटीडब्ल्यू के लिए धन्यवाद! – 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

जब तक आप इस मैपिंग के माध्यम से बस क्विकफ़िक्स विंडो खोलें, यह ठीक है। लेकिन ध्यान रखें कि आपका ग्लोबल स्टेट वैरिएबल काम नहीं करेगा जब क्विकफिक्स विंडो अन्य माध्यमों (ऑटोकॉम्स, अन्य प्लगइन्स इत्यादि) के माध्यम से खोला जाता है –

+0

सच है, मुझे उस मामले में दो बार एफ 2 दबाए जाने की आवश्यकता होगी। मुझे लगता है कि क्विकफिक्स विंडो खुलती है या नहीं, यह पूछने का एक तरीका है – Hassek