मैं विम में एक साथ कई फाइलें कैसे खोल सकता हूं?


87

क्या विम के भीतर से एक निर्देशिका में सभी फाइलें खोलने का एक तरीका है? इसलिए :commandयह प्रभाव में होगा "सभी फाइलों /some/pathको बफ़र्स के अंतर्गत खोलें "।

आदर्श रूप से, एक पुनरावृत्ति के तहत सभी फाइलों को खोलना बहुत अच्छा होगा।

जवाबों:


105

जिस कमांड को आप देख रहे हैं वह args है:

उदाहरण के लिए:

:args /path_to_dir/*

निर्देशिका में सभी फ़ाइलों को खोल देगा


32
**फ़ाइलों का पुनरावर्ती मिलान करने के लिए उपयोग करें । उदाहरण के लिए:args /path_to_dir/**
DAF

1
एक्सटेंशन के बिना फ़ाइलें खोलने के लिए, मूल निर्देशिका निर्दिष्ट करें जैसे args ** /। Hg / hgrc कार्य करता है, लेकिन ** / hgrc नहीं करता है।
79E09796

11
एक बार फाइल खोलने के बाद :tab allउन्हें अलग-अलग टैब में डालने के लिए उपयोग किया जाता है।
बैकलिन

"सभी फाइलें" में उप-निर्देशिकाएं शामिल होंगी जो वांछित नहीं हो सकती हैं। (मेरी विम त्रुटियों "/path_to_dir/subdir/" Illegal file name)। त्वरित समाधान argd */फिर से सूची से उन लोगों को हटाने के लिए दूसरी कमान चलाने के लिए है
lessthanideal

निम्नलिखित सुझाव के साथ उत्तर को पूरा करना वास्तव में अच्छा होगा: एक अच्छी प्रैक्टिस के रूप में और यह दिखाने के लिए कि सभी फाइलों को खोले गए कमांड के समान सेट को कैसे लागू किया जाए, आप सभी आदेशों को लागू करने के लिए निम्न कमांड निष्पादित कर सकते हैं my_commands_batch.vim फ़ाइल में सम्‍मिलित:argdo source my_commands_batch.vim
aturegano

21

यदि मैं एक निश्चित एक्सटेंशन के साथ समाप्त होने वाली सभी फ़ाइलों को खोलना चाहता हूं तो यह काम क्यों नहीं करता है? मैंने कोशिश की

:n ./**.cs

और केवल मौजूदा निर्देशिका में फ़ाइलें खोलता है।

मुझे जवाब मिल गया। सही कोड है :n **/*.cs

अधिक जानकारी के लिए :h find


9

क्या आप ने कोशिश की

:n /some/path/*

यह / कुछ / पथ में सभी फ़ाइलें खोल देगा

मुझे नहीं लगता कि यह पुनरावर्ती रूप से फ़ाइल खोलेगा।

संपादित करें

शायद ** का उपयोग करते हुए पुनरावृत्ति खुल जाएगी जैसा कि डैफ ने उल्लेख किया है


क्या करता है: n साधन? विम की मदद को देखते हुए मुझे केवल "पिछले पैटर्न को दोहराने" की ओर इशारा करता है .. जिसे मैं समझता हूं कि कीस्ट्रोक है। क्या केवल कमांड मोड के लिए सहायता प्राप्त करने का एक तरीका है?
U0001

1
बहुत आसान: h: n .. ": n" के लिए सहायता प्राप्त करें। क्या मुझे अपने प्रश्नों का उत्तर देना पसंद नहीं है;)
U0001

4

एक ऐसी विधि जिसके साथ खिलवाड़ करने की आवश्यकता नहीं है, वह है argsकिसी पाठ फ़ाइल में फ़ाइलों की सूची डालना, और फिर :soउस फ़ाइल में कमांड्स चलाने के लिए कमांड का उपयोग करना।

उदाहरण के लिए, यदि आप .phpदी गई निर्देशिका में समाप्त होने वाली सभी फ़ाइलों को खोलना चाहते हैं, तो पहले files.txtफाइलों की सूची बनाएँ , जो भी कमांड आप उन्हें खोलने के लिए उपयोग करना चाहते हैं।

sp alpha.php
sp bravo.php
sp charlie.php

फिर, भीतर:

:so files.txt

यदि फ़ाइलों की सूची बड़ी है, तो files.txtफ़ाइल के आउटपुट को पुनर्निर्देशित lsकरके और फिर spप्रत्येक फ़ाइल नाम से पहले प्रीपेन्ड करने के लिए vim मैक्रो का उपयोग करके फ़ाइल को जल्दी से उत्पन्न करना अपेक्षाकृत तुच्छ है ।

यह स्पष्ट रूप से argsऔर argdoआदेशों का उपयोग करने के रूप में सुरुचिपूर्ण नहीं है , लेकिन वे आदेश भी बहुत अधिक जटिल हैं।

कमांड लाइन पर एक ही कमांड के साथ ऐसा करने का एक तरीका भी हो सकता है, लेकिन 16 साल बाद भी मुझे अजीब और रहस्यमय होने के लिए विम प्रोग्रामिंग मिल रही है।


दिलचस्प है! नियंत्रण रखने के लिए एक अच्छा तरीका की तरह लगता है, जिस पर फ़ाइलों को खोलने की आवश्यकता होती है, बजाय किसी दी गई निर्देशिका की सभी फ़ाइलों को नेत्रहीन खोलने के बजाय अगर इन फ़ाइलों की आवश्यकता नहीं है।
cram2208

1

फ़ाइलों को पुन: खोलने का दूसरा तरीका

find . -type f -exec vi {} \;

4
"विम के भीतर से" प्रतिबंध को पूरा नहीं करता है।
ZyX

और फिर भी क्या जरूरत है :)
दुष्ट-एक

3
ऐसा नहीं होता। क्या जरूरत है vim के भीतर से दिए गए निर्देशिका से फ़ाइलें है । यदि आप ऐसी परिस्थितियों को दूर कर रहे हैं जो आप कह सकते हैं कि kate **/*(^/)(zsh ग्लोबिंग सिंटैक्स का उपयोग करके) क्या आवश्यक है: दिए गए निर्देशिका से फ़ाइलों को पुनरावृत्ति रूप से खोलता है। यह "भीतर से" नहीं है और यह बिल्कुल भी उपयोग नहीं कर रहा है, लेकिन यह "अभी भी वही करता है जिसकी आवश्यकता है"। या भी kate ~/.vimrc ~/.bashrc। "दी गई", "दी गई निर्देशिका से" और "पुनरावर्ती" को पूरी तरह से स्वीकार करते हुए, लेकिन यह "अभी भी वही करता है जिसकी आवश्यकता है": फाइलें खोलता है।
ZyX

यह एक समय में एक फाइल खोलता है
पॉल

1

यदि आप तर्क सूची में जोड़ना चाहते हैं;

:arga what_you-d_like_to_add

देख

:he arga

/ से अधिक जानकारी के लिए विम में।

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