vi [m] किसी अन्य फ़ाइल से लाइनों की श्रेणी पढ़ें


9

लिनक्स पर, file_Bvim में संपादन से मैं लाइन 10-25 जोड़ना चाहता हूं file_A। उदाहरण: किसी के पास बहुत सारे हेडर के साथ HTML-दस्तावेज़ों का एक पूरा सेट है और हाँ, कोई एक टेम्पलेट बना सकता है और वहां से शुरू हो सकता है, लेकिन:

मैं एक फ़ाइल से लाइनों की एक श्रृंखला सम्मिलित करने के लिए एक सरल [और सुरुचिपूर्ण] तरीके की तलाश कर रहा हूं और इसे उस फ़ाइल में जोड़ रहा हूं जिसे मैं वर्तमान में संपादित कर रहा हूं। विम में।

मैंने अभी तक जो समाधान पाए हैं, लेकिन वास्तव में वे नहीं हैं जो मैं देख रहा हूं, हैं

  • file_Bकमांड के अंदर:read file_A * पूरा file_A * file_B में जोड़ देगा। बहुत ज्यादा
  • विम के अंदर कॉपी और पेस्ट है - लेकिन इसके लिए एक को खोला जाना चाहिए file_A
  • अंदर file_A :10,25w! file_Bलाइनों की दी गई सीमा को 'भेजेगा' file_B
    यह कॉपी और पेस्ट करने के लिए काफी करीब लगता है
  • एक कई विंडो खोल सकता है
    लेकिन जैसा कि मैं 8 इंच की स्क्रीन पर काम करता हूं, कई विंडो ओरिएंटेशन को कठिन बनाते हैं

जैसा कि मैं एक आरामदायक समाधान खोजने में सक्षम नहीं था, मुझे आश्चर्य है कि अगर मैंने कुछ गलत समझा या मेरे द्वारा अब तक पाए गए तरीकों का आमतौर पर उपयोग किया जाता है और मानक तरीके के रूप में लिया जाता है।


इस SO प्रश्न को देखें , @ बर्नहार्ड का उत्तर वहाँ पर भी उस प्रश्न का स्वीकृत उत्तर था!
slm

@ एसएलएम मुझे इस उत्तर के बारे में पता था, लेकिन जैसा कि मैंने इसे मेरे द्वारा पाए गए समाधानों की सूची में नहीं डाला था, संकेत के लिए धन्यवाद। मैं अभी भी भीतर निर्मित किसी चीज की तलाश में हूं vim। लेकिन यह पहुंच से बाहर लगता है। और मैं वास्तव में आश्चर्यचकित हूं कि क्या यह केवल बाहर के आदेशों के माध्यम से प्राप्त होता है, क्योंकि जहां तक ​​मुझे अब तक मिला है vim, मुझे यहां तक ​​थोड़े प्रतिबंध आए।
इरच

@ cellar.dweller यदि आप वास्तव में कुछ आसान करना चाहते हैं, तो आप इसमें से कुछ प्रकार के कार्य कर सकते हैं।
बर्नहार्ड

जवाबों:


11

सबसे अच्छा समाधान मैं साथ आ सकता हूं, बाहरी रूप से कॉल करना sedऔर इसके साथ गठबंधन करना है:read !

:r !sed -n -e '10,25p' fileB

यहाँ काम नहीं करता है - लेकिन क्यों? सबसे पहले, आपकी मदद के लिए धन्यवाद। मुझे जो मिलता है वह है 'E34: नो पिछला कमांड' [मोटे तौर पर अनुवादित] जैसे कि विम एक कमांड दोहराने की कोशिश करता है। जहां तक ​​मैं इसे समझता हूं, कदम से कदम: विम के :rलिए कम है read। मुझे इसके बारे में कोई जानकारी नहीं है sedऔर इसका उपयोग कैसे करना है। बेशक, मैंने fileBवास्तविक फ़ाइल के साथ :)
erch

@ cellar.dweller मेरा उत्तर किसी एक के द्वारा अपडेट किया गया था, मुझे उस कोड द्वारा वही त्रुटि मिली। मैंने उसे पीछे किया। देखें कि क्या यह आपके लिए काम करता है।
बर्नहार्ड

@Stephane जवाबों को छोटा करने के लिए अच्छा है, लेकिन आपका सुझाव काम नहीं आया।
बर्नहार्ड

अब यह काम कर रहा है! थोड़ा myslef जोड़ने के लिए: :10rआदि के साथ शुरू होने वाली सामग्री को लाइन दस से [जब तक यह मौजूद है] पर रखा जाएगा। अब आकर्षक के रूप में काम करता है। महान। आपका बहुत बहुत धन्यवाद!
एरच

2
अरे! माफ़ करना। के विस्तार के बारे में भूल गए! होना चाहिए था :r!sed 10,25\!d। ध्यान दें कि आपको -eया उद्धरणों की आवश्यकता नहीं है , इसलिए आप इसे :r!sed -n 10,25pसंक्षिप्त रूप में भी लिख सकते हैं । :r sed '10,$\!d;25q'पूरी फ़ाइल पढ़ने से बचने के लिए।
स्टीफन चेज़लस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.