विम - एक कमांड में बफ़र को सहेजें और बंद करें


25

मेरे पास एक निर्देशिका में पाठ फ़ाइलों का एक गुच्छा है और मुझे पता है कि मुझे प्रत्येक एक इंडिविजुअल को संपादित करने की आवश्यकता होगी।

मैं कमेंड लाइन के साथ शुरू करता हूं

vim *.txt

जो फाइलों को अलग-अलग बफर के रूप में खोल देता है और मुझे पहले वाले को देखता है। मैं इसे संपादित करता हूं - फिर मैं इसे बचाने के लिए ': w' का उपयोग करता हूं और बफर को बंद करने के लिए 'bd' को अगले एक पर ले जाता हूं।

बफर को बचाने और बंद करने के लिए यह ': w: bd' मेरे लिए लंबा लगता है, और मुझे संदेह है कि इसे करने का एक और अधिक निन निंजा तरीका है - जिस बफर को आप काम कर रहे हैं, उसे एक झपट्टा महसूस होने पर बचाने और बंद करने का क्या तरीका है?


मेरा दोबारा तरीका यह होगा कि आप :nextबफर में चले जाएँ और एक बार आपका काम पूरा होने के बाद सब कुछ लिख / बंद कर दें :wqa। इससे यह लगता है कि आप :set hiddenमें है ~/.vimrc
रोमेनैल

जवाबों:


22

कमांड-लाइन पर विम को फाइलें पास करते समय, वे न केवल बफ़र्स में खोले जाते हैं, बल्कि तर्क सूची को भी आबाद करते हैं । इसलिए, आप कमांड का उपयोग कर सकते हैं :nextऔर :firstउनके माध्यम से नेविगेट करने के लिए (और :argdoबैच प्रसंस्करण के लिए, जो एक निफ्टी चाल हो सकती है)। आपके प्रश्न के लिए मैं जो कमांड सुझाता हूं, वह है :wnext(संक्षिप्त रूप :wn), जो :writeवर्तमान बफर है और फिर उसी पर जाता है :next

आपको स्पष्ट रूप से :bdeleteएक बफर की आवश्यकता नहीं है , विशेष रूप से तब नहीं जब आप फ़ाइलों के एक सेट के साथ कमांड-लाइन से विम को लॉन्च कर रहे हैं और फिर काम पूरा होने पर इसे छोड़ दें। (एकमात्र अपवाद जिसके बारे में मैं सोच सकता हूं, वह सिस्टम मेमोरी को बचाने के लिए एक विशाल फ़ाइल को लोड कर रहा है, या कई अलग-अलग संपादनों के लिए एकल GVIM उदाहरण का फिर से उपयोग कर रहा है।)

हालाँकि, यदि आप वास्तव में यह चाहते हैं, तो बस एक कस्टम कमांड को परिभाषित करें, जैसे

:command Wd write|bdelete

5
आपने ओपी से जो मांगा था, उसे प्राप्त करने के दो तरीकों का उल्लेख किया है, लेकिन दूसरा स्पष्ट नहीं है :w|bd:।
जोनो

-> यह ओपी का उपयोग करने वाले दृष्टिकोण को फिट करने का लाभ है, हालांकि मैं सहमत हूं :nextकि कुछ मामलों में अधिक समझ में आता है।
जोनो

4

जबकि मैं मानता हूं कि आपको खुले बफ़र्स को हटाने की ज़रूरत नहीं है जो आप वर्तमान में उपयोग नहीं कर रहे हैं, मैं उन्हें हटाना पसंद करता हूं क्योंकि मेरे पास विम-एयरलाइन की टैब लाइन सक्षम है, जो सभी खुले बफ़र्स को हर समय सबसे ऊपर दिखाती है खिड़की। मेरे पास निम्नलिखित हैं .vimrc:

nnoremap qq :w\|bd<cr>

qq वर्तमान बफर को बचाता है और बंद करता है, लेकिन विम के "रिकॉर्ड मैक्रो" कार्यक्षमता के साथ भी गड़बड़ करता है (जो कि मैं ठीक हूं)।


2
बिल्ट-इन ZZआता है, लेकिन यह बफर को हटाने के बजाय पूरी तरह से विम को बचाने और छोड़ने के लिए समाप्त होता है। लोअरकेस zzएक दिलचस्प वैकल्पिक मानचित्रण हो सकता है, किसी के लिए भी जो वर्तमान कर्सर लाइन पर दृश्य को केंद्रित करने की तुलना में मैक्रोज़ को अधिक मूल्यवान पाता है।
8 बिट्ट्री

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