ฉันจะแทรกข้อความที่ส่วนท้ายของกลุ่มบรรทัดได้อย่างไร


17

สมมติว่าฉันมีบล็อกข้อความ ...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

... และฉันต้องการแทรก a .ท้ายบรรทัดแต่ละบรรทัด อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้?

คำตอบ:


13

ฉันทำต่อไปนี้เพื่อต่อท้ายข้อความในหลายบรรทัด:

  • <c-V> - เข้าสู่โหมด Visual Block
  • ใช้j/ kเพื่อเลือกบรรทัด
  • $ - เลื่อนเคอร์เซอร์ไปที่อักขระตัวสุดท้าย
  • A - เข้าสู่โหมดแทรกหลังจากตัวละครตัวสุดท้าย
  • แทรกข้อความที่ต้องการ
  • <Esc> - ออกจากโหมดแทรกและบล็อกต่อท้าย

เมื่อเปรียบเทียบกับการเขียน:normหลังจากการเลือกมีการกดปุ่มน้อยกว่า แต่เหตุผลที่แท้จริงที่ฉันใช้นี่คือเพราะมันเป็นสัญชาตญาณสำหรับฉันที่จะทำงานในโหมด Visual Block สำหรับการเปลี่ยนแปลงประเภทนี้


รวมที่มีประโยชน์มากกับการวางคอลัมน์ของข้อความ
Paul Rougieux

8

ในบรรทัดแรกเพียงพิมพ์: 4:norm A.

4และ:สร้างช่วงสำหรับคุณแล้วnorm A.เพิ่มจุดลงในแต่ละบรรทัด

วิธีแก้ปัญหาสำหรับย่อหน้าที่ยาวขึ้นอาจเป็น: Vip<C-v>$A.<Esc>

ขั้นตอนแรกคือการเลือกย่อหน้าด้วยVipจากนั้นคุณเปลี่ยนเป็นโหมดบล็อกภาพและเลื่อนเคอร์เซอร์ไปที่จุดสิ้นสุดของแต่ละบรรทัดด้วย$จากนั้นคุณเพิ่ม.ไปยังแต่ละบรรทัดด้วยA.และได้เข้าสู่โหมดปกติด้วย<Esc>เพื่อดูการเปลี่ยนแปลงที่นำไปใช้กับแต่ละบรรทัด .


:Aคำสั่งนี้คืออะไร? ฉันไม่พบมันผ่าน:h :A
Peter Rincker

ความผิดฉันเอง. ในความเป็นจริงไม่ได้ทดสอบคำตอบ ฉันกำลังอัพเดท มันควรใช้คำสั่งปกติเช่นเดียวกับ @Kritixi Lhitos คำตอบ
rbernabe

ตัวละครสองตัวที่น้อยกว่า4:norm A.จะเป็น4:s/$/.
Philippos

3

ก่อนอื่นคุณสามารถเลือกใช้สายตาโดยVใช้ปุ่มเคลื่อนไหวเพื่อเลือกข้อความทั้งหมด (หรือถ้าข้อความนั้นเป็นย่อหน้าที่คุณสามารถทำได้ [เริ่มต้นที่บรรทัดแรก] V}) :แล้วพิมพ์ สิ่งนี้ควรแสดงบางอย่างเช่น:'<,'>ในบรรทัดคำสั่ง

:'<'>normal A.

สิ่งนี้จะดำเนินการnormal A.ในบรรทัดที่เลือก normal A.ดำเนินการA.ตามการกดแป้นโหมดปกติ นี่Aเป็น.ส่วนท้ายของแต่ละบรรทัดที่เลือก


3

หากคุณต้องการเพิ่มจุดที่ส่วนท้ายของทุกบรรทัด:

:%norm A.

หรือคุณสามารถใช้การค้นหาและแทนที่:

:%s/$/./

% คือไฟล์ทั้งหมด $ คือท้ายบรรทัด


เนื่องจาก @ vim.ryan ขอบล็อกข้อความแทนที่จะเป็นไฟล์ทั้งหมด :1,4s/$/./ ซึ่งจะแทนที่อักขระตัวสุดท้ายด้วยจุดบนบรรทัดที่หนึ่งถึงสี่
rjt

1

หากต้องการทำให้เป็นเรื่องทั่วไปมากขึ้นคุณสามารถบันทึกแมโครในบรรทัดเดียวแล้วเล่นกลับในแต่ละบรรทัดในช่วงที่คุณเลือก

บันทึกแมโครลงในการลงทะเบียน (q register ในตัวอย่างนี้):

qqA.<Esc>q

จากนั้นคุณสามารถเลือกบรรทัดที่คุณต้องการใช้งานด้วยสายตา:

Vip

จากนั้นเล่นมาโครของคุณในแต่ละบรรทัด (ช่วงจะถูกป้อนอัตโนมัติ):

:'<,'>norm @q
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.