NERDTree एक फ़ाइल कैसे खोलें और स्वचालित रूप से एक्सप्लोरर बफर को बंद करें


10

NERDTree प्लगइन का उपयोग करते समय डिफ़ॉल्ट व्यवहार एक नई फ़ाइल खोलने और NERDTree बफर को खुला रखने के लिए है। मैं जो करना चाहता हूं वह इस डिफ़ॉल्ट व्यवहार को बनाए रखना है, लेकिन जब मैं चाहता हूं तो इसे ओवरराइड करना भी जरूरी है क्योंकि मैंने एक फ़ाइल खोलने के बाद एनईआरडीट्री बफर को बंद कर दिया जाएगा।

मुझे पता है कि मैं let NERDTreeQuitOnOpen=1एक नई फ़ाइल खोलने पर NERDTree बफर को स्वचालित रूप से बंद करने के लिए उपयोग कर सकता हूं, लेकिन यह विकल्प पूरी तरह से डिफ़ॉल्ट व्यवहार (जो वह नहीं है जो मैं चाहता हूं) को ओवरराइड करता है।

आदर्श रूप से मैं यह जानना चाहूंगा कि अगर मैं चाहता हूं तो एनईआरडीट्री में एक अंतर्निहित सुविधा है। (मैं खोज रहा हूं, लेकिन मुझे ऐसा कुछ नहीं मिला, इसलिए मुझे लगता है कि यह वास्तव में मौजूद नहीं है)

और अगर वह मौजूद नहीं है तो मेरे पास दो विचार हैं:

  • सबसे पहले एक एक समारोह जो तय करेगा बनाने के लिए है NERDTreeQuitOnOpenकरने के लिए 1, फ़ाइल को खोलने और उसके बाद फिर से सेट NERDTreeQuitOnOpenकरने के लिए 0

  • दूसरा एक निम्नलिखित मानचित्रण बनाने के लिए है: map d<CR> <CR> :NERDTree <CR> :bd<CR>जो फ़ाइल को खोलता है (पहला <CR>), वापस NERDTree बफर ( :NERDTree <CR>) में जाता है और इस बफर ( :bd <CR>) को बंद करता है। मुझे इसमें सुधार करना चाहिए ताकि मैपिंग केवल NERDTree बफर में मौजूद हो, लेकिन मुझे लगता है कि यह एक बहुत बदसूरत समाधान है और मुझे लगता है कि इसमें सुधार किया जा सकता है।

कौन सा विचार सबसे अच्छा होगा और क्यों? या एक और भी बेहतर विकल्प है?



@Peter: आपकी टिप्पणी के लिए धन्यवाद, लेख बहुत ही रोचक है और मैं शायद netrw और स्प्लिट एक्सप्लोरर की अवधारणा को आजमाऊंगा। मुझे लगता है कि मैं लेख में बताए गए लाभ का लाभ समझ रहा हूं, लेकिन समस्या यह है कि यह वास्तव में मेरी समस्या को हल नहीं करता है यह सिर्फ आपके द्वारा उपयोग किए जाने वाले टूल को बदलने की सलाह देता है। मैं अपनी आदतों को बदलने के खिलाफ नहीं हूं, लेकिन मैं अपनी समस्या को पहले हल करना चाहूंगा और फिर एक नया टूल
आज़माऊंगा

संबंधित, SU पर अनुत्तरित प्रश्न: superuser.com/q/821720/334516 । शायद map d<cr> <cr>:NERDTreeClose<cr>मैपिंग के लिए?
मूरू

@ एमुरु: धन्यवाद, आपकी मैपिंग ठीक काम करती है और यह मेरी तुलना में कम बदसूरत लगती है :) एसयू पर सवाल के बारे में, मुझे यकीन नहीं है कि यह पूरी तरह से संबंधित है क्योंकि वह फाइल को एनईआरडीट्री के बफर में खोलना चाहती है जबकि मैं चाहती हूं इसे एक नए बफ़र में खोलें और फिर NERDTree बफ़र को बंद करें: वह एक स्प्लिट विंडो के साथ समाप्त होता है जबकि मैं 2 बफ़र्स के साथ समाप्त करना चाहता हूं, स्प्लिट विंडो में नहीं।
प्रतिमा stat

जवाबों:


5

जैसा कि प्रश्न बहुत सारे उत्तर उत्पन्न करने के लिए प्रतीत नहीं होता है, मैं इसका उत्तर सिर्फ @muru के सुझाव के साथ दूंगा, जो कि मैंने netrw एक्सप्लोरर में जाने से पहले एक सप्ताह के लिए उपयोग किया है। (निश्चित रूप से अगर एक बेहतर विकल्प उत्तर आता है तो मैं ख़ुशी के साथ स्वीकार कर सकता हूँ और नया स्वीकार करूँगा)

फॉलिंग मैपिंग का उपयोग करने का विचार है:

map d<cr> <cr>:NERDTreeClose<cr>

जो फ़ाइल को खोलता है जैसा कि आमतौर पर किया जाता है और फिर फ़ंक्शन को कॉल करता है जो NERDTree बफर को बंद कर देता है, जहां कर्सर नहीं है।

संपादित करें: मैंने हाल ही में एनईआरडीट्री में वापस स्विच किया और अपने समाधान को फिर से काम किया: मैंने जो मैपिंग करने का सुझाव दिया था, वह काम कर रहा था, लेकिन जैसा कि यह हर बफर में मौजूद था, मुझे dहर बार डबल प्रेस करना पड़ता था जो मैं कुछ हटाना चाहता था जो बहुत कष्टप्रद है। (शायद मैं timeoutसेटिंग्स बदल सकता था, लेकिन मुझे वह तरीका पसंद है जो वर्तमान में मेरे लिए निर्धारित है, यह भी कि मैं इसे किसी अन्य कुंजी संयोजन पर मैप नहीं करना चाहता था)।

इसलिए मैंने अपने पहले समाधान को निम्न पंक्तियों द्वारा बदल दिया है .vimrc:

autocmd BufEnter NERD_tree_* nmap  d<CR> <CR> :NERDTreeToggle <CR>
autocmd BufLeave NERD_tree_* unmap d<CR>

इस तरह मैपिंग केवल NERDTreeबफ़र्स में बनाई गई है और यह अन्य बफ़र्स में मेरे वर्कफ़्लो के साथ गड़बड़ नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.