ค้นหาการเลือกในกลุ่ม


107

ฉันใช้ปลั๊กอิน vim และ vim สำหรับ visual studio เมื่อเขียน C ++ object->public_member.memberfunc()บ่อยครั้งที่ฉันพบตัวเองต้องการที่จะค้นหาสตริงภายในฟังก์ชั่นเช่นการเรียกร้องให้ทุก

ฉันรู้ว่ากลุ่มเป็นวิธีที่สะดวกในการค้นหาคำเดียวโดยการกด*และ#และยังสามารถค้นหาสตริงที่พิมพ์โดยใช้/คำสั่งสแลชที่แพร่หลาย เมื่อพยายามค้นหาอินสแตนซ์ทั้งหมดของสตริงที่ยาวขึ้นเช่นเดียวกับด้านบนจะต้องใช้เวลาสักครู่ในการพิมพ์ซ้ำหลังจาก/นั้น

มีวิธีค้นหาการเลือกหรือไม่? ตัวอย่างเช่นไฮไลต์ด้วยvแล้วคัดลอกด้วยyมีวิธีวางหลัง/ไหม มีทางลัดที่ง่ายกว่านี้หรือไม่?


คำตอบ:


155

ตรวจสอบเคล็ดลับกลุ่มนี้: ค้นหาข้อความที่เลือกด้วยสายตา

หรือคุณสามารถดึงข้อความที่เลือกด้วยyแล้วไปที่โหมดค้นหา/จากนั้นคุณสามารถวางข้อความที่ดึงออกมาสุดท้ายด้วยCtrl + R 0


4
@CMS. ขอบคุณ. เคล็ดลับดีๆ! การใช้: reg เพื่อดูว่ามีอะไรอยู่ในรีจิสเตอร์ของคุณจากนั้นใช้ cntl-R N เพื่อรับสิ่งที่อยู่ในรีจิสเตอร์ N นั้นยอดเยี่ยมมาก!
Rob Wells

87

ตอบ

  1. ดึงข้อความที่คุณต้องการค้นหา
  2. q/p
  3. Enter

คำอธิบาย

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

สำหรับรายละเอียดเพิ่มเติมกรุณาพิมพ์ :help q/


4
ฉันชอบอันนี้เพราะฉันคิดว่าการพิมพ์ <ctrl-r> ไม่สะดวก
ม.ค.

ยอดเยี่ยม! การใช้ emacs ใช้evil-modeงานได้จริงในขณะที่คำตอบที่ได้รับการยอมรับจะแตกอย่างน่าสังเวช (อาจเป็นเพราะการใช้Ctrlคีย์)
eestrada

2
ดีสำหรับสตริงที่เรียบง่าย แต่ไม่หนีตัวอักษรพิเศษ regex ตามที่ระบุไว้ในความคิดเห็นนี้คำตอบอื่น
Bluu

1
และคุณไม่จำเป็นต้องดึงมันด้วยซ้ำ เลือกบนภาพq/gvpซึ่งgvย่อมาจากการเลือกภาพสุดท้าย ...

1
@nwildner q/gvpไม่ได้ผลสำหรับฉัน คุณช่วยชี้แจงข้อเสนอแนะของคุณได้ไหม
bam

38

การใช้งานQ /แทนเพียง/ (เช่นเดียวกับQ : ) ตอนนี้คุณสามารถแก้ไข VIM ผ่านคำสั่งและประวัติการค้นหาของคุณ! (ลอง Ctrl-N และ Ctrl-P ในบางครั้ง)


10

ฉันเพิ่งเรียนรู้ (ผ่านหนังสือที่ยอดเยี่ยมPractical Vim ) ว่ามีปลั๊กอินสำหรับสิ่งนั้น คุณสามารถค้นหาปลั๊กอินบน GitHub

ปลั๊กอินนี้ช่วยให้คุณค้นหาเลือกภาพกับและ*#


5
โปรดทราบว่าคำตอบอื่น ๆ ไม่ได้หลบหนี เมื่อใช้วิธีการเหล่านั้นอักขระเมตาใด ๆ ที่เลือกไว้จะไม่ถูกค้นหาอย่างแท้จริงทั้งนี้ขึ้นอยู่กับการmagicตั้งค่าปัจจุบัน ซึ่งอาจทำให้การค้นหาล้มเหลวสำหรับอักขระเมตาคาแร็กเตอร์ที่ต้องการการปรับสมดุล ปลั๊กอินที่กล่าวถึงที่นี่จะหลบหนีก่อนค้นหาข้อความที่เลือก
Kurt Hutchinson

1
มันใช้งานได้ แต่น่าเสียดายที่คุณไม่สามารถใช้nเพื่อไปยังรายการที่พบถัดไปในขณะที่วิธีการของ Cory และ CMS อนุญาตให้ ..
Ayrat

2

คุณสามารถเลือกข้อความด้วยภาพและกด * และ # เพื่อค้นหาเหตุการณ์ถัดไป ... มันจะทำงานเหมือนเดิมข้อแม้เดียวคือ:

ช่องว่างในส่วนที่เลือกจะตรงกับช่องว่างใด ๆ เมื่อค้นหา (ค้นหา "hello world" จะพบคำว่า "hello" ที่ท้ายบรรทัดโดยมี "world" อยู่ที่จุดเริ่มต้นของบรรทัดถัดไป)

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


2
สำหรับฉันเลือกข้อความด้วยสายตาจากนั้นกด * เพียงแค่ขยายการเลือกภาพของฉัน
martin jakubik

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