แทนที่ข้อความเมื่ออยู่ในโหมดบล็อกภาพ


10

บางทีฉันกำลังค้นหาวิธีที่ผิด แต่ฉันล้มเหลวในการหาวิธีการทำเช่นนี้

นี่คือสถานการณ์: ฉันมีรายการในไฟล์ข้อความที่ฉันต้องการแทรกคำเดียวกันในหลายบรรทัดนี่คือตัวอย่างข้อความ:

12.1 ข้อ 1
12.2 ข้อ 2
12.3 ข้อ 3

ตอนนี้ฉันทำเครื่องหมายบล็อกแบบเห็นภาพคอลัมน์ที่ 8 ซึ่งระบุด้วยเครื่องหมายขีดล่างด้านล่างและตั้งใจจะแทนที่ส่วนของช่องว่างด้วยDoneโดยไม่ย้ายคอลัมน์รายการ:

12.1 _ ข้อ 1
12.2 _ ข้อ 2
12.3 _ ข้อ 3

ฉันคาดหวังว่าฉันจะเข้าสู่โหมดแทนที่ได้ แต่ฉันสามารถป้อนการแทรก ( I) ผนวก ( A) หรือเปลี่ยนโหมด ( c) เท่านั้น โหมดการเปลี่ยนแปลงมาใกล้กับสิ่งที่ฉันต้องการ: ถ้าฉันรู้ว่าความยาวของคำว่าบล็อกสามารถตั้งค่าความกว้างเดียวกันได้

มีบางอย่างที่ฉันหายไปที่นี่หรือไม่?

คำตอบ:


18

ทำไมคุณไม่เลือก 4 คอลัมน์แล้วกดc?

<C-v>
2j
3l
cDone
<Esc>

นอกจากนี้คุณสามารถใช้:h normal:

V
2j
:'<,'>norm 7lRDone
<Esc>

1
สิ่งนี้ใช้ได้ผลDoneแต่ถ้าฉันต้องการเขียนอย่างอื่นฉันต้องเป็นอิสระจากการนับตัวอักษรถ้าเป็นไปได้
ธ.ค.

1
:normเป็นเพื่อนของคุณแล้ว
romainl

ใช่สามารถใช้โซลูชันที่สองสำหรับการทำแผนที่ที่สะดวก ขอบคุณ.
Thor

1

หากคุณต้องการที่จะทดแทนภายในบล็อกภาพคุณสามารถใช้ปลั๊กอินvis.vim

http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block

ติดตั้ง:

ดาวน์โหลด vis.vba.gz จากhttp://www.drchip.org/astronaut/vim/index.html#VIS

# Open vis.vba.gz in Vim 7.1 or later.
vim vis.vba.gz

# Source the open file.
:so %

# Quit Vim
:q

เมื่อติดตั้งแล้ว:

ctrl-v to enter visual-block mode
Move to select the block you want
:B s/pattern/newtext/

ยิ่งไปกว่านั้นคุณสามารถดำเนินการคำสั่ง Ex ใด ๆ บนบล็อกที่มองเห็นไม่ใช่แค่การแทนที่ :B !sortเช่น


ปลั๊กอินที่ดีฉันจะใช้มัน :-) แต่ฉันจะใช้มันเพื่อแทนที่คอลัมน์ที่กำหนดเองได้อย่างไร
Thor

ขวาคุณยังคงมีปัญหาในการตั้งค่าความกว้างบล็อกภาพอย่างรวดเร็วเพื่อให้ตรงกับคอลัมน์ความกว้างโดยพลการของคุณ ฉันมักจะทำ <นับ> wหรือeเพื่อเลือกหลายคอลัมน์ได้อย่างรวดเร็วจากนั้นปรับด้วยหรือh l
คริสเตียน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.