จะแทนที่คำเดียวภายใต้เคอร์เซอร์ได้อย่างไร?


144

ฉันจะแทนที่คำใต้เคอร์เซอร์ในกลุ่มได้อย่างไร

ดังนั้นแทนที่จะใช้dwแล้วiจึงใช้คำนั้นEscมีชุดค่าผสมที่ง่ายกว่าเพื่อแทนที่คำใต้เคอร์เซอร์หรือไม่

คำตอบ:


251
ciw

(เปลี่ยนคำใน) จะเปลี่ยนทั้งคำภายใต้เคอร์เซอร์ เปรียบเทียบกับ

cw

ซึ่งจะเปลี่ยนคำจากตำแหน่งเคอร์เซอร์ปัจจุบันเท่านั้น สำหรับข้อมูลเพิ่มเติมดูคำถาม / คำตอบSO นี้


จะจัดการกับสถานการณ์อย่างไรถ้าคำนั้นมีจุดหรือเครื่องหมายทับ (เช่น /usr/bin/bashหรือ1222.333) ดูเหมือนว่าการตีความเป็นกลุ่ม/และ.ในตอนท้ายของคำและจะไม่เลือกสตริงทั้งหมด
Alexander Cska

85

ฉันมักจะพบว่าตัวเองต้องการที่จะแทนที่คำหนึ่งด้วยคำอื่นที่ฉันได้ดึงจากที่อื่น ปัญหาเกี่ยวกับการแก้ปัญหาอื่น ๆ ก็คือว่าถ้าคุณพยายามที่จะเปลี่ยนแปลงคำแล้ววางต่อไปของคุณจะเป็น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". 

หวังว่าสิ่งที่คุณกำลังมองหา


7
มันใช้งานได้ดี แต่ต้องเปลี่ยนใหม่onceเท่านั้น หากฉันต้องแทนที่สองsecond' by ครั้งแรก (ในตัวอย่างของคุณ) คำที่คัดลอกจะกลายเป็นsecondหลังจากการแทนที่ครั้งแรก
ViFI

32

ciw

c   change
iw  inner word

การดำเนินการนี้จะลบคำที่อยู่ใต้เคอร์เซอร์ (แม้ว่าเคอร์เซอร์จะอยู่ตรงกลางคำ) และเข้าสู่โหมดแทรก


ดูเอกสารประกอบของ Vim สำหรับการอ้างอิง:

:help c
:help text-objects

17

หากคุณต้องการเปลี่ยนคำด้วยคำที่ถูกดึงไปก่อนหน้านี้จะมีวิธีแก้ไขอื่นให้viwp(เมื่อคุณดึงคำแรกแล้ว)

ciwลบคำก่อนหน้านี้และทำให้คุณอยู่ในโหมดแทรกในตำแหน่งเดิม แต่คุณสามารถใช้ctrl+r, 0เพื่อแทรกเนื้อหาของ register 0 (ซึ่งมีคำที่ดึงไว้ก่อนหน้านี้)

ดังนั้น:

yiw
[move to next word]
ciw
ctrl+r
0

วิธีนี้ใช้งานได้ดีกว่าviwpเพราะหลังจากการใช้ครั้งแรกคุณสามารถทำการแทนที่ด้วย.ซ้ำได้ มันไม่ได้เปลี่ยนเป็นโหมดภาพและไฮไลต์สั้น ๆ


1
ไม่แน่ใจว่าสิ่งที่คุณหมายถึงว่ามันไม่ได้เปลี่ยนโหมดตรงข้ามน่าจะเป็นกรณี แต่บางทีนั่นคือสิ่งที่คุณต้องการที่จะอยู่ในโหมดแทรก แต่ข้อได้เปรียบที่สำคัญคือviwpสามารถทำสิ่งนี้ได้หลายครั้งด้วยการหมุนเพียงครั้งเดียว ขอบคุณ!
Palo

โอ้คุณพูดถูกฉันกำลังคิดว่าจะเข้าสู่โหมดภาพแก้ไข ฉันไม่ได้ตระหนักว่านั่นเป็นข้อ จำกัดviwp- แม้.จะไม่ซ้ำซ้อน
คอนเนอร์

3
นี่คือทางออกที่ดีที่สุดเมื่อเราดึงคำที่ใช้แทนแล้ว
mljrg

1
นี่คือคำตอบ! ความสามารถในการใช้.กับสิ่งนี้ยอดเยี่ยมมาก!
izzy

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