2013-01-02 36 views
8

मैं फ़ाइलों की एक सूची है मैं विम में खोल दिया है इस आदेश का उपयोग करने पर विम आदेश का उपयोग करना:सभी खुली फ़ाइलों

vim `cat list.txt` 

मैं सभी खुली फ़ाइलों पर इस आदेश को चलाने के लिए देख रहा हूँ:

:99,104 norm i# 

(लाइनों से 99 104 करने के लिए, एक टिप्पणी "#" सम्मिलित) < --simple, काम करता है

जब मैं वर्तमान फ़ाइल पर अपेक्षा के अनुरूप यह काम करता है सम्मिलित करने के लिए उपरोक्त आदेश चलाते हैं। मैं सभी खुली फ़ाइलों पर सटीक वही कमांड चलाने के लिए वीआईएम कैसे प्राप्त करूं? मैंने :argdo, :windo, :bufdo पर कोशिश की लेकिन कोई भाग्य नहीं था।

कोई सुझाव?

उत्तर

11

मुझे लगता है कि bufdo काम करेगा, यदि आप set hidden से पहले (bufdo सहेजे बिना बफ़र्स को बदलने के लिए अनुमति देने के लिए):

:set hidden 
:bufdo 99,104 norm i# 

फिर :bufdo! w या :wa साथ सभी फाइलों को बचाने के।

(नोट: set hidden रूप में अच्छी तरह set autowrite साथ प्रतिस्थापित किया जा सकता है।)

+0

धन्यवाद, मैं याद किया। चीयर्स। –

3

मैं एसईडी एक बेहतर विकल्प हो सकता है लगता है कि अगर आप इसका इस्तेमाल कर सकते हैं। sed vim जैसे इंटरैक्टिव संपादक की बजाय कमांड लाइन एडिटर है।

sed -i '99,104s/^/#/' list of files 
+1

'sed' एक _stream_ संपादक है। यदि आप एक (वास्तविक) _text_ संपादक चाहते हैं जिसे स्क्रिप्ट या कमांड लाइन से संचालित किया जा सकता है, तो 'ed' और' ex' है। –

1

क्योंकि आप तर्क के रूप में सभी फाइलों को आपूर्ति की है, :argdo सही कमांड है। (जब तक आप अन्य फाइलें नहीं खोलते, :bufdo भी काम करेगा।) यदि आप :set hidden (जैसा कि दूसरे उत्तर में इंगित किया गया है) नहीं चाहते हैं, तो आपको तुरंत :update के माध्यम से बफर जारी रखना होगा। क्योंकि आप एक :normal आदेश का उपयोग कर रहे हैं, आप :execute में यह संलग्न करने की एक और पूर्व आदेश को श्रेणीबद्ध करने के लिए सक्षम होना चाहिए: ": सेट छिपा"

:argdo 99,104 execute 'norm i#' | update