2010-06-23 7 views
86

मैं omnifunc=pythoncomplete का उपयोग कर रहा हूं। जब एक शब्द स्वत: पूर्ण (उदाहरण के लिए, os.<something>), मुझे योग्य वर्ग के सदस्यों और कार्यों की सूची मिलती है, जैसा कि अपेक्षित, साथ ही साथ स्क्रैच बफर पूर्वावलोकन विंडो चयनित सदस्य या फ़ंक्शन के बारे में दस्तावेज़ के साथ मिलती है। यह बहुत अच्छा है, लेकिन मैं जिस फ़ंक्शन को चाहता हूं उसे चुनने के बाद, पूर्वावलोकन विंडो बनी हुई है।विम में स्वतः पूर्ण होने के बाद आप स्वचालित रूप से पूर्वावलोकन विंडो को कैसे हटाते हैं?

मैं इसे :pc से छुटकारा पा सकता हूं, लेकिन मैं अपने कार्य, एक ला ग्रहण का चयन करने के बाद ही इसे स्वचालित रूप से गायब करना चाहता हूं। मैंने completeopt के साथ खेला है लेकिन इसका कोई फायदा नहीं हुआ है।

+5

अच्छा सवाल - मैंने omnicomplete का उपयोग करना बंद कर दिया क्योंकि यह उस बेवकूफ बफर को खुला छोड़ दिया। –

उत्तर

100

अपने vimrc में निम्नलिखित रखो supertab प्लगइन स्थापित, supertab-closepreviewonpopupclose नामक एक विकल्प है।

रखो अपने .vimrc में निम्नलिखित:

let g:SuperTabClosePreviewOnPopupClose = 1 
+0

एक आकर्षण की तरह काम किया। धन्यवाद! –

+2

ऐसा लगता है कि मेरे लिए कमांड विंडो संपादित करें (q: या q /)। मैंने एक और चेक जोड़ा: && bufname ("%")! = "[कमांड लाइन]" दोनों पंक्तियों – Ben

+2

@बेन: वाह [पोस्ट करने से पहले मैंने आपकी टिप्पणी कैसे नहीं देखी [इस सवाल] (http://stackoverflow.com/ क्यू/11733388/79,125)। वहां से जो जवाब मिला वह 'पक्लोस' को 'चुप' में बदलना था! pclose'। – idbrii

1

कुछ मैकिंग पूर्वावलोकन विंडो को बंद करने का प्रयास करने के लिए आप निम्नलिखित मैपिंग में फेंक सकते हैं।

inoremap <space> <C-O>:wincmd z<CR><space> 
inoremap (<C-O>:wincmd z<CR>(
inoremap) <C-O>:wincmd z<CR>) 
inoremap , <C-O>:wincmd z<CR>, 
inoremap <CR> <C-O>:wincmd z<CR><CR> 
inoremap <esc> <esc>:wincmd z<CR> 

तुम भी autocommands इस्तेमाल कर सकते हैं पूर्वावलोकन विंडो जब आप डालने मोड में पूरा हो जाने पर बंद करने के लिए:

" If you prefer the Omni-Completion tip window to close when a selection is 
" made, these lines close it on movement in insert mode or when leaving 
" insert mode 
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif 
autocmd InsertLeave * if pumvisible() == 0|pclose|endif 
17

यदि आपके पास:

augroup GoAwayPreviewWindow 
autocmd! InsertLeave * wincmd z 
augroup end 
+15

मैं इस उत्तर को ऊपर उठाता हूं क्योंकि यह एक संकेत है कि YouCompleteMe प्लगइन में एक g: ycm_autoclose_preview_window_after_insertion विकल्प है। – duleshi

+0

@ duleshi ठीक वही जो मैं खोज रहा था! –

+0

@AndyHayden Glad मैं मदद कर सकता हूँ! यही कारण है कि मैंने टिप्पणी छोड़ दी! – duleshi

7

मैं कैसे स्वचालित रूप से इसे बंद करने के लिए पता नहीं है, लेकिन आप टाइप कर सकते हैं

: बंद करने के लिए pclose

मैन्युअल रूप से स्क्रैच पूर्वावलोकन।

60

भले ही पहले से ही एक स्वीकृत उत्तर है, मुझे यह सीधे दस्तावेज़ों से मिला जो इस समस्या वाले किसी भी प्लगइन के लिए काम करेंगे।

autocmd CompleteDone * pclose 
+11

'CompleteDone' संस्करण 7.4 में जोड़ा गया था।इस विधि को 'कर्सर मोडेड'/'InsertLeave' दृष्टिकोण पर प्राथमिकता दी जानी चाहिए। –

+7

@ पीटररकर मैं खिड़की को पूरा करने के लिए बंद नहीं करना पसंद करता हूं (क्योंकि मैं दस्तावेज देखना चाहता हूं क्योंकि मैं तर्कों में टाइप कर रहा हूं), इसलिए मैं 'InsertLeave' लाइन का उपयोग करूँगा। – DBedrenko

2

मैं जानता हूँ कि इस सवाल का बहुत पुराना है, लेकिन एक "क्लीन" समाधान की तलाश के दिनों के बाद मैं सिर्फ CompleteDone autofunction कि काम करता पाया:

au CompleteDone * pclose 
0

आपको लगता है कि टाइप कर सकते हैं .vimrc:

set completeopt-=preview 
+0

क्यू आप कृपया और अधिक व्याख्या करने की देखभाल करते हैं? – Wtower

+1

यह वास्तव में प्रश्न का उत्तर नहीं देता है, यह पूर्वावलोकन विंडो को कभी भी पॉप-अप करने से रोकता है, पूरा होने के बाद खारिज नहीं किया जाता है। ध्यान दें कि ओपी ने कहा था कि उन्होंने "पूर्णतया" भी कोशिश की है। – nerdwaller

संबंधित मुद्दे