vi [m] อ่านช่วงของบรรทัดจากไฟล์อื่น


9

บน Linux แก้ไขfile_Bในกลุ่มผมต้องการที่จะเพิ่มบรรทัด 10-25 file_Aจาก ตัวอย่าง: หนึ่งชุดมีทั้งเอกสาร HTML ที่มีส่วนหัวค่อนข้างเหมือนกันและใช่หนึ่งสามารถสร้างแม่แบบและเริ่มจากที่นั่น แต่ก็ยัง:

ฉันกำลังมองหาวิธีที่เรียบง่าย [และสง่างาม] ในการแทรกช่วงของบรรทัดจากไฟล์หนึ่งไฟล์และเพิ่มลงในไฟล์ที่ฉันกำลังแก้ไขอยู่ ในกลุ่ม

วิธีแก้ปัญหาที่ฉันพบจนถึงตอนนี้ แต่ไม่ตรงกับที่ฉันกำลังมองหา

  • ภายใน file_Bคำสั่ง:read file_Aจะเพิ่ม * ทั้ง file_A * ลงใน file_B มากเกินไป
  • มีการคัดลอกและวางภายในเป็นกลุ่ม - แต่สำหรับอันนี้ต้องเปิด file_A
  • ภายใน file_A :10,25w! file_Bจะ 'ส่ง' ช่วงของบรรทัดที่file_Bระบุ
    ดูเหมือนว่าจะใกล้เคียงกับการคัดลอกและวาง
  • หนึ่งสามารถเปิดหลาย windows ในกลุ่ม
    แต่ในขณะที่ฉันทำงานบนหน้าจอ 8 นิ้วหน้าต่างหลายบานทำให้การวางแนวยาก

เนื่องจากฉันไม่สามารถหาวิธีแก้ปัญหาที่สะดวกสบายได้ฉันสงสัยว่าฉันเพิ่งเข้าใจผิดบางอย่างหรือวิธีการที่ฉันพบว่ามีการใช้กันทั่วไปและถือเป็นวิธีมาตรฐาน


ดูคำถาม SOนี้คำตอบของ @ Bernhard เป็นคำตอบที่ยอมรับสำหรับคำถามนั้นตรงนั้นเช่นกัน!
slm

@slm ฉันทราบคำตอบนี้ แต่เมื่อฉันไม่ได้ใส่ลงในรายการวิธีแก้ปัญหาที่ฉันพบขอขอบคุณสำหรับคำใบ้ vimฉันยังคงมองหาสิ่งที่สร้างขึ้นภายใน แต่ดูเหมือนว่าไม่สามารถเข้าถึงได้ และฉันสงสัยจริงๆว่าสิ่งนี้ทำได้เพียงผ่านคำสั่งจากภายนอกเพราะเท่าที่ฉันได้รับvimตอนนี้ฉันมาถึงข้อ จำกัด เล็ก ๆ น้อย ๆ ที่นี่
erch

@ cellar.dweller คุณสามารถทำฟังก์ชั่นบางอย่างได้ถ้าคุณต้องการบางสิ่งที่ง่ายขึ้น
แบร์นฮาร์ด

คำตอบ:


11

ทางออกที่ดีที่สุดที่ฉันสามารถทำได้คือโทรจากภายนอกsedและรวมเข้าด้วยกัน:read !

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

ใช้งานไม่ได้ที่นี่ - แต่ทำไม ก่อนอื่นขอขอบคุณสำหรับความช่วยเหลือ สิ่งที่ฉันได้รับคือ'E34: ไม่มีคำสั่งก่อนหน้านี้' [แปลคร่าว ๆ ] ราวกับว่ากลุ่มพยายามที่จะทำซ้ำคำสั่ง เท่าที่ฉันเข้าใจมันทีละขั้นตอน: :rสั้นสำหรับreadเป็นกลุ่ม ฉันไม่มีความรู้เกี่ยวกับsedวิธีการใช้งาน แน่นอนฉันแทนที่fileBไฟล์จริง :)
erch

@ cellar.dweller คำตอบของฉันถูกปรับปรุงโดยบางคนฉันได้รับข้อผิดพลาดเดียวกันโดยรหัสนั้น ฉันย้อนกลับไป ดูว่ามันเหมาะกับคุณหรือไม่
แบร์นฮาร์ด

@Stephane ดีที่จะตัดทอนคำตอบ แต่ข้อเสนอแนะของคุณไม่ทำงาน
แบร์นฮาร์ด

ตอนนี้มันใช้งานได้! ในการเพิ่ม myslef เล็ก ๆ น้อย ๆ : การเริ่มต้นด้วย:10rฯลฯ จะวางเนื้อหาจากบรรทัดที่สิบบน [ตราบเท่าที่มีอยู่] ทำงานเหมือนจับใจในตอนนี้ ยิ่งใหญ่ ขอบคุณมาก!
erch

2
อ๊ะขอโทษ ลืมเกี่ยวกับการขยายตัวของกลุ่ม! :r!sed 10,25\!dควรจะได้รับ โปรดทราบว่าคุณไม่จำเป็นต้องใช้-eหรือคำพูดเพื่อให้คุณสามารถเขียนมัน:r!sed -n 10,25pสั้น ๆ เช่นกัน :r sed '10,$\!d;25q'เพื่อหลีกเลี่ยงการอ่านไฟล์ทั้งหมด
Stéphane Chazelas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.