2011-04-24 19 views
7

answer of this question:bd के अनुसार अंतिम बफर होने पर विम (जीवीआईएम) को छोड़ना नहीं चाहिए। दुर्भाग्यवश यह मेरे मामले में करीब जीवीआईएम करता है। क्या मैंने बीडी के साथ कुछ गलत समझा?बफर हटाने के बाद विम छोड़ता है (बीडी)

मैं भी एक पूर्वसंरचित vimrc फ़ाइल का उपयोग कर रहा हूं। हो सकता है कि वहां एक सेटिंग उस पक्ष को प्रभावित करे, लेकिन मुझे यह नहीं मिला।

+0

मैंने आपके .vimrc की कोशिश की और मेरे पास एक ही समस्या नहीं है। यह कुछ और होना चाहिए जो इसे पैदा कर रहा है। – nocash

+0

मेरे vimrc कोशिश करने के लिए धन्यवाद। जैसा कि ज़ीएक्स ने उल्लेख किया है ऐसा लगता है कि यह कुछ प्लगइन के साथ एक समस्या है। मैंने अपने उत्तर के तहत अपने अनुशंसित आदेश का आउटपुट पोस्ट किया। – Zardoz

+1

मैं वास्तव में उत्सुक हूं कि प्लगइन इसका कारण बन रहा था। जैसा कि मैं वास्तव में इस कार्यक्षमता _have_ करना चाहता हूँ। –

उत्तर

15

कर प्रयास करें निम्नलिखित:

:set eventignore=all | bd | set eventignore= 

इस तो vim छोड़ने नहीं होगा कि आपके पास एक autocommand कि vim जब कोई और अधिक बफ़र्स सूची में मौजूद हैं इस्तीफा परिभाषित करता है, तो उसके बाद करने का प्रयास करें कुछ प्लगइन

verbose autocmd BufWinLeave,BufLeave,BufDelete,BufUnload,BufWipeout 

यह आप सभी autocommands दिया घटनाओं से जुड़ी दिखाएगा और वे कहाँ परिभाषित किया गया (इन घटनाओं है कि जब बफर हटा दी जाती है क्रियान्वित कर रहे हैं कर रहे हैं)। ध्यान दें कि मेरे पास इन घटनाओं से जुड़े किसी भी ऑटोकॉन्म्स नहीं हैं जिन्हें स्टैंडटार्ट विम वितरण में प्लगइन द्वारा परिभाषित किया गया है।

अद्यतन: मुझे आपके आउटपुट में कुछ भी बुरा नहीं दिख रहा है। आप

verbose autocmd BufNew,BufAdd,BufCreate,BufEnter,BufWinEnter 

(क्योंकि जब आप अंतिम बफर को छोड़कर नया खाली बनाते हैं) भी कोशिश कर सकते हैं। इस कुछ भी संदिग्ध दिखाई नहीं देता है, घटना प्रकार अनदेखी शुरू: यदि आप लिनक्स पर हैं निम्न स्क्रिप्ट का प्रयास करें: जब तक आप घटना नाम है कि मुसीबत का कारण बनता है खोजने के

for event in BufWinLeave BufLeave BufDelete BufUnload BufWipeout BufNew BufAdd BufCreate BufEnter BufWinEnter 
do 
    event=$event vim file -c "set eventignore=$event | bd" 
done 

यह स्क्रिप्ट पुनरावृति करना चाहिए। इसके बाद आप चेक किए जाने वाले प्लगइन की संकीर्ण संख्या के लिए execute "verbose autocmd" $event का उपयोग कर सकते हैं। आपके द्वारा autocmd समूहों की सूची प्राप्त करने के बाद (समूह नाम आपके आउटपुट में ईवेंट नाम से पहले दिखाए जाते हैं: railsPluginDetect ऐसे समूहों में से एक है), उनमें ईवेंट हटाएं (augroup {GroupName} | execute 'autocmd!' | augroup END) और पता लगाएं कि कौन सी प्लगइन दावा करने के लिए है।

वैकल्पिक रूप से, आप डिबगर का उपयोग कर सकते हैं:

debug bd 

, तो s<CR>n<CR><CR><CR>... तक vim इस्तीफा; यह याद रखना न भूलें कि विम से पहले > प्रॉम्प्ट से ऊपर क्या दिखाया गया है।

+0

संकेत के लिए धन्यवाद। वास्तव में ऐसा लगता है कि एक प्लगइन यह करता है। जैसा कि आपने अनुशंसित किया है, वैसे ही वर्बोज़ कमांड चलाता हूं और यह परिणाम प्राप्त होता है: https://gist.github.com/939432 क्या आपके पास कोई विचार है कि इनमें से कौन से प्लगइन्स इसका कारण बनते हैं और फिर इसे कैसे ओवरराइट करते हैं? – Zardoz

+0

@Zardoz अद्यतन देखें। – ZyX

+0

सुनिश्चित नहीं है कि समस्या का हल क्या हुआ, लेकिन यह अब और नहीं होता है। यदि यह फिर से आता है, तो मैं एक टिप्पणी छोड़ दूंगा कि प्लगइन ने क्या किया। सहायता के लिए धन्यवाद। – Zardoz

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