2009-04-19 13 views
11

में एकाधिक फ़ाइलों तक पहुंचने की पुस्तक "यूनिक्स इन अशशेल" पुस्तकें 572-573 पृष्ठों पर एकाधिक फ़ाइलों तक पहुंचने के बारे में चर्चा करती हैं। ": E", ": e #", ": e new_file", ": n files", ": args", ": prev" और ": n!" जैसे बहुत उपयोगी आदेश प्रतीत होते हैं। आदेश मुझे भ्रमित करते हैं:वीआईएम

": n फ़ाइलों की सूची में अगली फ़ाइल संपादित करें।"

": तर्कों को प्रदर्शित करने के लिए फ़ाइलों की सूची प्रदर्शित करें।"

": पिछली फाइल फ़ाइलों की सूची में पिछली फ़ाइल संपादित करें।"

जब मैं "args" करता हूं तो मुझे कोई वास्तविक सूची नहीं दिखाई दे रही है। कोने में केवल एक छोटा सा पाठ है। मैं उन सभी फ़ाइलों को देखना चाहता हूं जिन्हें मैंने ": ई", यानी बफर में फ़ाइलों की एक सूची के साथ एक्सेस किया था।

जब मैं "n फ़ाइलें" कमांड करता हूं तो मैं सूची कहां देख सकता हूं? आदेश क्या हैं: "prev" और ": n" क्या करना चाहिए? मुझे त्रुटि संदेश मिला:

संपादित करने के लिए केवल एक फ़ाइल है।

+0

अंतिम भाग के बारे में: यदि आपके पास केवल एक बफर खुला है, तो आप उनके माध्यम से टॉगल नहीं कर सकते हैं ('केवल एक ही खुला है)। – Rook

उत्तर

16

मैंने उल्लेख में पुस्तक नहीं पढ़ी है, लेकिन मैं यह समझाने की कोशिश करूंगा कि vim फ़ाइलों को कैसे संभालता है।

विम में बफर हैं। आप प्रत्येक फ़ाइल को इसके साथ खोलते हैं:

:e name_of_the_file.txt (एक बफर में फ़ाइल लोड करता है, यानी।"फ़ाइल को खोलता है")

तुम भी कर सकते हैं:

:e *.txt

उपयोगी विकल्प है, जबकि इस हैं

:set laststatus=2 (statusline हमेशा दिखाने के लिए)

:set wildmenu (कम करने के लिए खोलने फ़ाइलों कर)

यदि आपके पास netrw प्लगइन के साथ मानक विम है, तो आप यह कर सकते हैं:

:e . (vim की फाइल प्रबंधकों में से एक के लिए है, तो कहने के लिए)

बफ़र्स का प्रबंधन करने के लिए:

:ls आप (फ़ाइलें)

:bnext, और :bprevious वर्तमान में खोला बफ़र्स की एक सूची दे देंगे (या :bn और :bp) आपको बफर

:bd बफर/फ़ाइल बंद करता है ई (किया बफर)

अन्य बफर प्रकार अन्य प्रयोजनों (yanking/चिपकाने, अस्थायी, vim के आंतरिक, ... आदि)

+0

क्या बफर का संकेत Emacs जैसा ही है? दिलचस्प बात यह है कि पुस्तक केवल Emacs के लिए बफर परिभाषित करती है :(यह कहता है "जब आप Emacs में कोई फ़ाइल खोलते हैं, तो फ़ाइल को एक बफर में डाल दिया जाता है। - बफर सामग्री का दृश्य जो आपके पास किसी भी समय होता है उसे विंडो कहा जाता है "क्या बफर और खिड़कियां विम में चीजों से अलग हैं? –

+1

हां, आप यह कह सकते हैं। उपलब्ध बफर के प्रकारों में कुछ अंतर हैं, लेकिन सिद्धांत रूप में, यह है। मुझे इमैक के बारे में निश्चित नहीं है, उसके पास खिड़कियां हैं/फ्रेम .., जबकि विम में खिड़कियां/टैब हैं। विम के बारे में: एक विंडो केवल यह दिखाने का वाई तरीका है कि एक बफर में क्या विम है। एक टैब स्क्रीन पर कई विंडो दिखाने का एक तरीका है (विम में टैब हाल ही में पेश किए गए हैं) – Rook

+2

मुझे नहीं लगता कि ': e * .txt' का उपयोग एकाधिक फ़ाइलों को खोलने के लिए किया जा सकता है।': अगला 'काम पर प्रतीत होता है, हालांकि: http://stackoverflow.com/a/12304605/1858225 –

5

उन आदेशों समझ बनाने के लिए के लिए, आप कार्य करें:

vim *.c 
एक निर्देशिका जहां उदाहरण के लिए बीस सी फ़ाइलें हैं, में

। एक फ़ाइल के साथ, फ़ाइलों की कोई अगली या पिछली या महत्वपूर्ण सूची नहीं है।

+0

वाह! बहुत अच्छा उदाहरण :) महान धन्यवाद! –

5

सर्व: n: p: ar: rew: पिछले आदेश पर कार्य करते हैं लाइन तर्क सूची।

उदा।

> touch aaa.txt bbb.txt ccc.txt 
> gvim *.txt 

vim aaa.txt

:ar gives a status line 

[aaa.txt] bbb.txt ccc.txt 

:n moves to bbb.txt 

:ar gives the status line 

aaa.txt [bbb.txt] ccc.txt 

:rew rewinds us back to the start of the command line arg list to aaa.txt 

:last sends us to ccc.txt 

:e ddd.txt edits a new file ddd.txt 

:ar gives the status line 

aaa.txt bbb.txt [ccc.txt] 

तो आदेश केवल सेट प्रारंभिक कमांड लाइन तर्क सूची पर चल रही है में खुलता है।

8

क्या जोनाथन Leffler ने कहा, यदि आप कमांडलाइन से एकाधिक फ़ाइलों के साथ विम आह्वान नहीं है, आप विम का तर्क सूची सेट कर सकते हैं के बाद विम के माध्यम से खुला है के अलावा:

नोट तर्क सूची है कि :ls से प्राप्त खुले बफर की सूची से अलग है। यहां तक ​​कि यदि आप विम में सभी खुले बफर बंद करते हैं, तो तर्क सूची वही रहती है। :n और :prev विम में एक नया नया बफर खोल सकता है (यदि उस फ़ाइल के लिए एक बफर पहले से खुला नहीं है), या आपको मौजूदा बफर पर ले जा सकता है।

इसी तरह आप तर्क सूची को प्रभावित किए बिना विम में एकाधिक बफर खोल सकते हैं (या यहां तक ​​कि यदि तर्क सूची खाली है)। :e एक नया बफर खोलता है लेकिन तर्क सूची को जरूरी नहीं करता है। खुले बफर और तर्क सूची की सूची स्वतंत्र हैं। यदि आप तर्क सूची के माध्यम से खुले बफर की सूची के माध्यम से पुन: प्रयास करना चाहते हैं, तो :bn और :bp और मित्रों का उपयोग करें।

2

स्पष्टीकरण के लिए, विम में तर्क सूची, बफर सूची, विंडोज़ और टैब पेज हैं। तर्क सूची उन फ़ाइलों की सूची है जिनके साथ आप आमंत्रित करते हैं (उदा। Vim file1 file2); : n और: p कमांड इस के साथ काम करते हैं। बफर सूची उन फ़ाइलों की इन-मेमोरी प्रतियों की सूची है जिन्हें आप संपादित कर रहे हैं, बस emacs की तरह।ध्यान दें कि प्रारंभ में लोड की गई सभी फ़ाइलें (तर्क सूची में) बफर सूची में भी हैं। आज़माएं: दोनों पर अधिक जानकारी के लिए बफर-सूची में मदद करें।

विंडोज बफर के लिए व्यूपोर्ट्स हैं। विंडोज़ के बारे में सोचें "डेस्क" के रूप में आप बफर को उन पर काम करने के लिए रख सकते हैं। विंडोज खाली हो सकते हैं या बफर प्रदर्शित कर सकते हैं जिन्हें अन्य विंडो में भी प्रदर्शित किया जा सकता है, जिसका उपयोग आप उदाहरण के लिए उसी बफर के दो अलग-अलग क्षेत्रों को देखने के लिए कर सकते हैं। आज़माएं: अधिक जानकारी के लिए विंडोज़ की मदद करें।

टैब विंडोज़ के संग्रह हैं। उदाहरण के लिए, आपके पास एक विंडो के साथ एक टैब हो सकता है, और एक और टैब दो खिड़कियों के साथ लंबवत विभाजित हो सकता है। आज़माएं: अधिक जानकारी के लिए टैबपेज की सहायता करें।