ใน Vim มีวิธีวางข้อความในบรรทัดค้นหาหรือไม่?


106

ฉันต้องการค้นหา$maximumTotalAllowedAfterFinishและแทนที่ด้วย$minimumTotalAllowedAfterFinish. แทนที่จะพิมพ์ข้อความยาว:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

มีวิธีคัดลอกชื่อตัวแปรแบบยาวเหล่านี้ลงในบรรทัดการค้นหาหรือไม่เนื่องจากในบรรทัดคำสั่งฉันไม่สามารถพิมพ์ " p" เพื่อวางได้


2
ฉันเดาว่าทูต้องหนีคนแรกด้วย$เพราะคาแร็คเตอร์นี้หมายถึงจุดสิ้นสุดของบรรทัด
Luc M

1
@LucM OP ยังสามารถใช้\Vที่ใดก็ได้ในรูปแบบการค้นหาเพื่อปิดใช้งานอักขระ "เวทมนตร์"
ประ - เถิดเทิง

คำตอบ:


130

CTRLR {0-9a-z"%#:-=.}คุณสามารถแทรกเนื้อหาของการลงทะเบียนหมายเลขหรือชื่อโดยการพิมพ์ โดยการพิมพ์CTRL-R CTRL-Wคุณสามารถวางคำปัจจุบันไว้ใต้เคอร์เซอร์ ดู:

:he cmdline-editing

สำหรับข้อมูลเพิ่มเติม.


9
ขอบคุณสำหรับคำตอบสิ่งที่พบบ่อยที่สุดสำหรับฉันคือ: CTRL+ R +(ตามที่เป็นไปของเนื้อหาคลิปบอร์ด)
Peter Butkovic

5
0ทะเบียนมีสตริงสุดท้ายกระชาก
Evgeni Sergeev

53

คัดลอกตามปกติแล้วทำCtrlR"เพื่อวาง มีCtrlRทางลัดอื่น ๆ อีกมากมาย(เช่นเครื่องคิดเลขชื่อไฟล์ปัจจุบันเนื้อหาคลิปบอร์ด) พิมพ์:help c_<C-R>เพื่อดูรายการทั้งหมด


16

คัดลอก:
1) v(หรือไฮไลต์ด้วยเมาส์ในโหมดภาพ)
2) y(ดึง)

วาง:
1) /(โหมดค้นหา)
2) Ctrl + R + 0(วางจาก yanked register)


1
ฉันกำลังมองหาคำตอบนี้เมื่อฉันค้นหาคำถามนี้ใน google ฉันสงสัยว่าทำไมจึงมีคะแนนติดลบ
santiago arizti

15

พิมพ์q:เพื่อเข้าสู่โหมดแก้ไขประวัติในบัฟเฟอร์ใหม่ จากนั้นแก้ไขบรรทัดสุดท้ายของบัฟเฟอร์แล้วกดEnterเพื่อดำเนินการ


3
นั่นคือสิ่งที่บัฟเฟอร์มีไว้สำหรับ! ขอบคุณ (ฉันมักจะสะดุดเมื่อพิมพ์: q และสับสน)
gsk

3
q/ยังมีประโยชน์ในการเข้าถึงประวัติการค้นหาและวางการค้นหาใหม่
79E09796

3

หรือสร้างคำสั่งใน vim buffer เช่นพิมพ์ในบัฟเฟอร์:

s/foo/bar/gci

และคัดลอกไปยังรีจิสเตอร์ที่มีชื่อโดย"ayy(ถ้าเคอร์เซอร์อยู่ในบรรทัดนั้น!)

ตอนนี้คุณสามารถเรียกใช้เนื้อหาของ " a" register จาก Vim's Ex command line ด้วย:

:[OPTIONAL_RANGE]@a

ฉันจะใช้มันตลอดเวลา.


"ayy" ของคุณถูกยกมา (ดังนั้นจึงไม่ถูกต้อง) หรือไม่ (ดังนั้นจึงมีข้อผิดพลาด "ในตอนท้าย)
tzot

2

โดยปกติคุณจะทำได้โดยการเลือกเมาส์ (บางทีCtrlInsหรือCtrlCหลังจากเลือก) จากนั้นเมื่ออยู่ในบรรทัดคำสั่ง / ค้นหาให้คลิกกลาง (หรือShiftInsหรือCtrlV)

อีกวิธีหนึ่งคือการเขียนบรรทัดคำสั่ง / การค้นหาของคุณในบัฟเฟอร์ข้อความพร้อมกับการแก้ไขทั้งหมดที่มีอยู่ในบัฟเฟอร์ข้อความเริ่มต้นด้วย:และทั้งหมดจากนั้นในบรรทัดให้ทำ:

"add@a

ซึ่งจะเก็บบรรทัดคำสั่งทั้งหมดไว้ในบัฟเฟอร์aแล้วเรียกใช้งาน แม้ว่าจะไม่ถูกเก็บไว้ในประวัติคำสั่ง

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

สุดท้ายคุณสามารถเข้าq:สู่การแก้ไขประวัติในบัฟเฟอร์ข้อความ


1

คุณสามารถวางเคอร์เซอร์บนคำที่คุณต้องการเพิ่มลงในรูปแบบของคุณจากนั้นกด/หรือ:เพื่อเข้าสู่โหมดค้นหาหรือโหมดคำสั่งจากนั้นกดCtrlRCtrlWเพื่อคัดลอกคำนั้น ที่มา

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