vi / vim, ฉันจะเขียนจำนวนบรรทัดลงในไฟล์ใหม่ได้อย่างไร


30

ฉันมีหลายบรรทัดที่ฉันต้องการเขียนลงในไฟล์อื่น
ฉันจะทำสิ่งนั้นได้อย่างไร

คำตอบ:


44

คุณทำได้

:100,200w filename

แน่นอน 100,200 คือช่วงของบรรทัดที่คุณต้องการเขียน


ที่อยู่รวมหรือไม่รวมอยู่ด้วย?
Marcin

3
รวมทั้ง รวมถึงถ้าคุณใช้รูปแบบ:: / ^ some /, / ^ else / w ชื่อไฟล์หรือเครื่องหมาย: 'a,' ชื่อไฟล์ bw รวมถึงบรรทัดที่ระบุว่า 'a' และ 'b'
Bruce Ediger

สวัสดี @Bernhard ถ้าฉันต้องการตัดเส้นจากไฟล์ปัจจุบัน
Ravi Sevta

19

ทั่วไปมากที่สุด:

  1. เลื่อนเคอร์เซอร์ไปที่บรรทัดแรกของกลุ่มที่คุณต้องการเขียน Hit m และaต่อเนื่อง นั่นคือ "ชุดเครื่องหมายชื่อ 'a'"

  2. เลื่อนเคอร์เซอร์ไปที่บรรทัดสุดท้ายของกลุ่มกด 'm' และ 'b'

  3. เปลี่ยนไปเป็นโหมดคำสั่งที่ตี: เป็นลำดับที่ทำ:'a,'b w filenameแล้วกดส่งคืน

ที่จะทำงานใน vi, nvi และ vim

อีกวิธีหนึ่งทำงานในกลุ่มที่ทันสมัยยิ่งขึ้น:

  1. วางเคอร์เซอร์ที่บรรทัดแรกของกลุ่มบรรทัดที่คุณต้องการเขียน กดปุ่มV"เริ่มต้นบล็อกเส้นที่มองเห็น"

  2. เลื่อนเคอร์เซอร์ไปที่ด้านล่างของกลุ่มของเส้น Vim จะเน้นด้วยวิดีโอย้อนกลับในแต่ละบรรทัด

  3. เขียนออกมา กด:ปุ่มเพื่อเข้าสู่โหมดบรรทัดคำสั่ง ที่จะทำให้คุณได้รับการพร้อมท์ที่ด้านล่างของ scren ที่มีลักษณะ: :'<,'> นั่นหมายถึงจากจุดเริ่มต้นของบล็อกภาพไปยังจุดสิ้นสุด พิมพ์wและชื่อไฟล์และกดส่งคืน

คุณสามารถเพิ่มบรรทัดแยกลงในส่วนท้ายของไฟล์ตามที่คุณต้องการโดยวางเคอร์เซอร์บนบรรทัดที่คุณต้องการเขียนแล้วพิมพ์: :.w >> filenameและกดปุ่มย้อนกลับ

คำสั่ง "เขียนกลุ่มบรรทัด" ยังสามารถใช้งานกับ ">> ชื่อไฟล์" แทน "ชื่อไฟล์" ">>" ทำให้ vi หรือกลุ่มที่จะผนวกกับไฟล์มากกว่าแค่เขียนมัน


8

:w filenameหากต้องการเพิ่มคำตอบของแบร์นฮาร์ดคุณยังสามารถเลือกพื้นที่ใช้โหมดภาพและจากนั้นป้อน


8

หากคุณรู้หมายเลขบรรทัดที่คุณต้องการเขียนคุณสามารถทำได้จากบรรทัดคำสั่ง:

vim -c "100,200w new_file.txt" -c wq original_file.txt

1

เคล็ดลับเล็ก ๆ อย่างหนึ่งคือการใช้หมายเลขบรรทัดสัมพัทธ์ ตัวอย่างเช่น:: + 0, + 99w ชื่อไฟล์เขียน 100 บรรทัดถัดไปในชื่อไฟล์


จะไม่เขียนทับไฟล์ต้นฉบับหรือไม่ OP ต้องการเขียนลงในไฟล์อื่น
SabreWolfy

1
@ SabreWolfy No; บางทีคุณอาจพลาด 'ชื่อไฟล์' หลังจากหมายเลขบรรทัด ฉันเพิ่งทดสอบเวอร์ชันของเขาและใช้งานได้
felwithe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.