ใน vi / vim ฉันจะผนวกไฟล์อย่างไรแทนที่จะเขียนทับมัน?


11

:w <file>ฉันรู้ว่าฉันสามารถเขียนไปยังแฟ้มโดยเพียงแค่ทำ ฉันอยากรู้ว่าฉันจะเขียนลงไฟล์ได้อย่างไรโดยการต่อท้ายมันแทนที่จะเขียนทับมัน

ตัวอย่างกรณีการใช้งาน: ฉันต้องการนำตัวอย่างบางส่วนออกจากไฟล์บันทึกเป็นไฟล์อื่น เพื่อให้บรรลุในวันนี้ฉันสามารถทำ:

  1. เปิดไฟล์บันทึก
  2. เลือกบางบรรทัดด้วย Shift+v
  3. เขียนเป็นไฟล์: :w /tmp/samples
  4. เลือกบรรทัดเพิ่มเติมด้วย Shift+v
  5. ต่อท้าย/tmp/samplesด้วย:w !cat - >> /foo/samples

แต่น่าเสียดายที่ขั้นตอนที่ 5 เป็นเวลานานน่าเกลียดและข้อผิดพลาดง่าย (หายไป>ทำให้คุณสูญเสียข้อมูล) ฉันหวังว่า Vim มีสิ่งที่ดีกว่าที่นี่


3
หากคุณกำลังสนใจในการใช้เป็นกลุ่มที่ดีกว่าการทำเช็คเอาน้องสาวของเว็บไซต์Vi และเป็นกลุ่ม
muru

คำตอบ:


26

จาก:h :w:

                                                :w_a :write_a E494
:[range]w[rite][!] [++opt] >>
                        Append the specified lines to the current file.

:[range]w[rite][!] [++opt] >> {file}
                        Append the specified lines to {file}.  '!' forces the
                        write even if file does not exist.

ดังนั้นหากคุณเลือกข้อความโดยใช้โหมดภาพให้ทำ:w >> /foo/samples( :'<,'>จะได้รับการเติมล่วงหน้าโดยอัตโนมัติ) หากคุณพลาด a >, Vim จะบ่น:

E494: Use w or w>>

สมบูรณ์แบบ :) ไม่มีอะไรที่เหมือนกับการอ่านเอกสาร ไม่รู้เกี่ยวกับ:hว่า จะใช้มันมากกว่านี้
Bruno Polaco

1
@BrunoPolaco เป็นเพียงชวเลข:h :helpเริ่มต้นด้วย:help helphelp? : D
muru

0

กำหนดฟังก์ชั่น:

fun! App(filename)
    exec "w !cat - >> " . shellescape(a:filename)
endfunc

เรียกใช้ฟังก์ชัน:

call App('/foo/samples')
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.