เป็นกลุ่ม: วิธีการแทรกในโหมดบล็อกภาพ?


145

คุณจะแทรกเมื่อคุณอยู่ในโหมดบล็อกภาพ (โดยการกด ctrl-V) ใน Vim ได้อย่างไร?


4
ความเป็นไปได้ที่ซ้ำกันของVIM Blockwise Insert
Conner

1
ผลรวมอย่างรวดเร็วของคำตอบ: ฉันจะใส่คำตอบที่นี่ในรูปแบบที่เรียบง่าย มีความคิดเห็นมากมายว่ากระทู้นี้กำลังจมอยู่ 1) ตรวจสอบว่าคุณเปิดใช้งาน + visualextra ในเวอร์ชัน Vim ของคุณหรือไม่โดยพิมพ์: ver ใน Vim 2) คุณใส่โดยทำเครื่องหมายสิ่งที่คุณต้องการแก้ไขก่อนแล้วกด I (ตัวใหญ่ i) - ตัวพิมพ์เล็กที่ฉันจะไม่ทำงาน 3) เมื่อคุณทำเช่นนั้นมันจะเป็นไปได้ว่าคุณจะใส่เฉพาะในบรรทัดแรก แต่เมื่อคุณทำเสร็จแล้วกด ESC และ j จากนั้นข้อความจะถูกคัดลอกไปยังบรรทัดอื่น นั่นเป็นวิธีที่ฉันจะได้รับ
Zeth

คำตอบ:


203

ลองสิ่งนี้

หลังจากที่เลือกบล็อกข้อความกดShift+ หรือร่วมทุนiI

ตัวพิมพ์เล็กiจะไม่ทำงาน

จากนั้นพิมพ์สิ่งที่คุณต้องการและนำไปใช้กับทุกบรรทัดให้กดEscสองครั้ง




หากไม่ได้ผล ...

ตรวจสอบว่าคุณได้+visualextraเปิดใช้งาน Vim ในเวอร์ชันของคุณหรือไม่

คุณสามารถทำได้โดยพิมพ์:verและเลื่อนดูรายการคุณสมบัติ (คุณอาจต้องการคัดลอกและวางลงในบัฟเฟอร์และทำการค้นหาแบบเพิ่มเติมเนื่องจากรูปแบบเป็นเลขคี่)

การเปิดใช้งานอยู่นอกขอบเขตของคำถามนี้ แต่ฉันแน่ใจว่าคุณสามารถหาได้ที่ไหนสักแห่ง


13
อย่าลืมAด้วย!
jmdeldin

42
คุณต้องกดปุ่ม Escape เพื่อออกจากโหมดแทรกก่อนที่ข้อความจะถูกทำซ้ำ
Brandon Joyce

19
มีใครเคยเห็นสิ่งนี้ไม่ทำงาน? ฉันมีการตั้งค่า vim ที่ไม่ได้แก้ไขบน CentOS ฉันกด ctrl + v กด ja สองสามครั้งและฉันเห็นเคอร์เซอร์เน้นอักขระแรกของสองสามบรรทัด ฉันกด Shift + i เคอร์เซอร์ถูกย้ายไปที่อักขระตัวแรกของบรรทัดแรก แต่ฉันกลับสู่โหมดปกติ ฉันรู้สิ่งนี้เพราะถ้าฉันกด "a" มันจะย้ายตัวละครไปทางขวาและมันบอกว่า "- INSERT -" หากฉันพิมพ์ตัวอักษรไม่กี่ตัวและกด Escape จะไม่ใช้กับบรรทัดอื่น
Tyler Collier

2
@TylerCollier ฉันประสบปัญหากับ Ubuntu 14.04 ใน digitalocean โปรดแสดงความคิดเห็นหากคุณพบวิธีแก้ปัญหา
Zack Burt

2
@ZacharyBurt เป็นกลุ่มเริ่มต้นที่ติดตั้งกับ Ubuntu 14.04 (ติดตั้งเป็นvi) ไม่รวมถึงvisualextraคุณสมบัติเพื่อแทรกบล็อกจะไม่ทำงานที่นั่น sudo apt-get install vimเปิดตัวเวอร์ชั่นเต็มรูปแบบซึ่งvisualextraเปิดใช้งานแล้ว @TylerCollier นี่อาจเป็นปัญหาเดียวกันกับ CentOS ที่คุณติดตั้งด้วย: ตรวจสอบผลลัพธ์ของvim --versionเพื่อดูรายการคุณสมบัติที่เปิดใช้งานทั้งหมด
Gabriel Grant

41
  1. กด ctrl และ v // start select
  2. กด Shift และ i // จากนั้นพิมพ์ข้อความใด ๆ
  3. กด esc esc // กด esc สองครั้ง

หลังจากกดctrl + vคุณสามารถกดjเพื่อเลือกเส้นด้านล่างตำแหน่งปัจจุบันkอย่างรวดเร็วหรือกดเพื่อเลือกเส้นด้านบนตำแหน่งปัจจุบันอย่างรวดเร็ว คุณยังสามารถใช้shiftปุ่มพร้อมกับupหรือdownข้อผิดพลาดเพื่อทำการเลือก
tyler.frankenstein

1
จากคำตอบทั้งหมดนี่เป็นคำตอบเดียวที่เหมาะกับฉัน ฉันใช้ mac โดยใช้การติดตั้งชง
Daniel Kaplan

ฉันเคยบ่นมาหลายปีแล้วว่าฉันไม่สามารถทำได้อย่างง่ายดายฉันชอบ (เหมือนแฮงค์) ในบล็อกเลือก ดังนั้นมันจึงเป็นเมืองหลวงiฉันประหลาดใจ ฉันใช้:normal iINPUT<CR>เพื่อป้อนที่จุดเริ่มต้นของบรรทัด ขอบคุณสำหรับสิ่งนี้!
Tim Visée

ฉันไม่คิดว่าคุณต้องกด esc สองครั้ง หากคุณกดอะไรก็ได้หลังจาก esc มันจะอัพเดทข้อความโดยอัตโนมัติ ถ้าไม่ทำเช่นนั้นจะทำในครึ่งวินาทีหรือมากกว่านั้น
Shahbaz

29

คุณอาจมีกรณีการใช้งานที่คุณต้องการลบบล็อกข้อความและแทนที่มัน

แบบนี้

Hello World
Hello World

คุณสามารถเลือกบล็อกภาพก่อน "W" และกดShift+ i- พิมพ์ "เด็ด" - กดESCแล้วลบ "โลก" ด้วยการเลือกบล็อกภาพ

อีกวิธีหนึ่งที่น่าสนใจกว่าคือเพียงแค่บล็อกภาพเลือก "โลก" ในทั้งสองบรรทัด พิมพ์สำหรับc changeตอนนี้คุณอยู่ในinsertโหมด ESCใส่สิ่งที่คุณต้องการและตี ทั้งคู่สะท้อนกลับด้วยการกดแป้นที่น้อย

Hello Cool 
Hello Cool

ขั้นตอนสุดท้ายนั้นมีประโยชน์สำหรับฉันคุณต้องกดESCแล้วบรรทัดที่ทำเครื่องหมายไว้ทั้งหมดจะแสดงตัวอักษรที่คุณพิมพ์เข้าไป
Webb Lu

สิ่งที่ยอดเยี่ยมมันช่วยได้มาก
prosti

9

หากคุณต้องการเพิ่มข้อความใหม่ก่อนหรือหลังโคลัมที่เลือก:

  • กด ctrl + v
  • เลือกคอลัมน์
  • กด Shift + i
  • เขียนข้อความของคุณ
  • กด esc
  • กด "jj"

2
รถถังคุณjjเพื่อเผยแพร่การเปลี่ยนแปลงในทุกบรรทัดด้านล่างเป็นบิตสุดท้ายที่ฉันพลาด!
กิโลกรัม

jjเป็นนักฆ่า!
Anh Tran
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.