ฉันจะแทนที่คำใต้เคอร์เซอร์ในกลุ่มได้อย่างไร
ดังนั้นแทนที่จะใช้dw
แล้วi
จึงใช้คำนั้นEsc
มีชุดค่าผสมที่ง่ายกว่าเพื่อแทนที่คำใต้เคอร์เซอร์หรือไม่
ฉันจะแทนที่คำใต้เคอร์เซอร์ในกลุ่มได้อย่างไร
ดังนั้นแทนที่จะใช้dw
แล้วi
จึงใช้คำนั้นEsc
มีชุดค่าผสมที่ง่ายกว่าเพื่อแทนที่คำใต้เคอร์เซอร์หรือไม่
คำตอบ:
ciw
(เปลี่ยนคำใน) จะเปลี่ยนทั้งคำภายใต้เคอร์เซอร์ เปรียบเทียบกับ
cw
ซึ่งจะเปลี่ยนคำจากตำแหน่งเคอร์เซอร์ปัจจุบันเท่านั้น สำหรับข้อมูลเพิ่มเติมดูคำถาม / คำตอบSO นี้
ฉันมักจะพบว่าตัวเองต้องการที่จะแทนที่คำหนึ่งด้วยคำอื่นที่ฉันได้ดึงจากที่อื่น ปัญหาเกี่ยวกับการแก้ปัญหาอื่น ๆ ก็คือว่าถ้าคุณพยายามที่จะเปลี่ยนแปลงคำแล้ววางต่อไปของคุณจะเป็นcw
คำที่คุณลบด้วย
ลองทำสิ่งต่อไปนี้:
1 "This first word should overwrite the second"
yiw yank inner word (copy word under cursor, say "first").
... Move the cursor to another word (say "second").
viwp select "second", then replace it with "first".
หวังว่าสิ่งที่คุณกำลังมองหา
once
เท่านั้น หากฉันต้องแทนที่สองsecond' by
ครั้งแรก (ในตัวอย่างของคุณ) คำที่คัดลอกจะกลายเป็นsecond
หลังจากการแทนที่ครั้งแรก
ciw
c change
iw inner word
การดำเนินการนี้จะลบคำที่อยู่ใต้เคอร์เซอร์ (แม้ว่าเคอร์เซอร์จะอยู่ตรงกลางคำ) และเข้าสู่โหมดแทรก
ดูเอกสารประกอบของ Vim สำหรับการอ้างอิง:
:help c
:help text-objects
หากคุณต้องการเปลี่ยนคำด้วยคำที่ถูกดึงไปก่อนหน้านี้จะมีวิธีแก้ไขอื่นให้viwp
(เมื่อคุณดึงคำแรกแล้ว)
ciw
ลบคำก่อนหน้านี้และทำให้คุณอยู่ในโหมดแทรกในตำแหน่งเดิม แต่คุณสามารถใช้ctrl+r, 0
เพื่อแทรกเนื้อหาของ register 0 (ซึ่งมีคำที่ดึงไว้ก่อนหน้านี้)
ดังนั้น:
yiw
[move to next word]
ciw
ctrl+r
0
วิธีนี้ใช้งานได้ดีกว่าviwp
เพราะหลังจากการใช้ครั้งแรกคุณสามารถทำการแทนที่ด้วย.
ซ้ำได้ มันไม่ได้เปลี่ยนเป็นโหมดภาพและไฮไลต์สั้น ๆ
viwp
สามารถทำสิ่งนี้ได้หลายครั้งด้วยการหมุนเพียงครั้งเดียว ขอบคุณ!
viwp
- แม้.
จะไม่ซ้ำซ้อน
.
กับสิ่งนี้ยอดเยี่ยมมาก!
ลองcw
- ใน 'เปลี่ยนคำ'
ใช้http://linuxmoz.com/vi-commands-cheat-sheet/หรือเอกสารอ้างอิงอื่น ๆ เป็นการอ้างอิง
/usr/bin/bash
หรือ1222.333
) ดูเหมือนว่าการตีความเป็นกลุ่ม/
และ.
ในตอนท้ายของคำและจะไม่เลือกสตริงทั้งหมด