วิธีการบล็อกรหัสแทนที่ในโหมดภาพ?


26

ฉันมีรายการที่ฉันต้องการแทนที่อักขระสองตัวแรก:

a) item 1
b) item 2
c) item 3

วิธีที่เร็วที่สุดในการทำสิ่งนี้คือ:

* item 1
* item 2
* item 3

ฉันมีวิธีการที่มีโหมดภาพ (Ctr-v, jjj แต่ต้องทำสองคำสั่งแทนที่ Iirc การแทนที่นี้สามารถทำได้ด้วย 1 คำสั่ง)


1
ชอบ.,.+2s/^../*/(หรือเท่ากันในการเลือกภาพ)? ทำไมสองคำสั่งแทนที่? 2cจะแทนที่อักขระสองตัว
muru

บางครั้งเฉพาะบรรทัดแรกในการเลือกภาพที่มีการเปลี่ยนแปลงทำซ้ำแล้วด้วย สำหรับบรรทัดอื่น ๆ ทำให้เกิดความยุ่งเหยิง
โพสต์เมื่อ

2
@ อายุคุณอยู่ในนิสัยของการกดCtrl-CแทนEsc? สิ่งนี้จะป้องกันการเปลี่ยนแปลงที่นำไปใช้กับแต่ละบรรทัดของการเลือกบล็อกภาพ
tommcdo

นั่นอาจเป็นสาเหตุหลักของความสับสน! ขอบคุณ!
ก่อให้เกิด

คำตอบ:


26

การเลือกบล็อกภาพ:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

การแทน:

:,+2s/^.\{2}/*

สูตรดอท:

cE*<Esc>
j.
j.

1
แนวทางบ้า: การใช้textobj-word-column.vimคุณสามารถทำได้ciC*<esc>และทำได้ หมายเหตุ: ปลั๊กอินนี้เป็นปลั๊กอิน "ทำในสิ่งที่ฉันหมายถึง" ดังนั้นจึงล้มเหลวในสถานที่และวิธีการที่ไม่คาดคิด แต่ปลั๊กอินยังคงมีประโยชน์ในกรณีง่าย ๆ เช่นนี้
Peter Rincker

น่าสนใจสูตรปกติและจุด!
ก่อให้เกิด

3
โปรดทราบว่าสำหรับวิธีแก้ปัญหาด้วย Visual-block คุณจะเห็นเฉพาะข้อความที่พิมพ์ในบรรทัดแรกเท่านั้น เมื่อคุณกด<Esc>มันจะเติมในบรรทัดที่เหลือ
tommcdo

ข้อเสนอแนะใด ๆ สำหรับวิธีการจำไว้ว่า c จะมาแทนที่? ชอบวิธี ctrl + D (เป็นเจ้าของ)
Jordan Mackie

2
@JordanMackie ใช้cสำหรับ "เปลี่ยนแปลง"
romainl

17

นี่เป็นวิธีที่มีประสิทธิภาพมากขึ้นในการทำสิ่งนี้:

  1. มีเคอร์เซอร์บนรายการแรกและตัวอักษรตัวที่ 1 ( 0), เข้าสู่โหมดภาพ 'บล็อก' Ctrl+ vและเลือกคอลัมน์ที่ 1 ของย่อหน้าปัจจุบันของคุณโดย}(หากรายการของคุณขึ้นบรรทัดใหม่) หรือใช้วิธีอื่นเช่นปุ่มลูกศร (เพื่อย้าย รอบตัวเลือก) หรือค้นหาลวดลาย/c)ซึ่งcเป็นองค์ประกอบสุดท้ายของคุณ)
  2. ย้ายไปที่สัญลักษณ์สุดท้ายของรายการของคุณด้วยkและl(หรือใช้ปุ่มลูกศร ) เพื่อเลือกสองคอลัมน์ที่คุณต้องการเปลี่ยน
  3. เปลี่ยนข้อความที่เลือกโดยการกดcและพิมพ์สัญลักษณ์กระสุนของคุณ ( *) Escและเสร็จสิ้นโดยการกดปุ่ม

ทำงานได้อย่างมีประสิทธิภาพมากขึ้นโดยเฉพาะในรายการที่ยาวขึ้น

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