“ ค้นหาต่อไป” ในกลุ่ม


535

หากต้องการค้นหาล่วงหน้าเป็นกลุ่มcakeฉันจะพิมพ์/cakeแต่เคอร์เซอร์จะกระโดดไปที่การแข่งขันนัดแรกเมื่อฉันกด Return มีคำสั่งกลุ่มคล้ายกับ "ค้นหาถัดไป"?


33
:helpรับใช้ในการใช้ :help /แสดงความช่วยเหลือเกี่ยวกับการค้นหาและคำตอบสำหรับคำถามของคุณจะปรากฏขึ้นมาเล็กน้อยหน้าเว็บ
Chris Morgan

คำตอบ:


876

มันnสำหรับต่อไปและNก่อนหน้า

และถ้าคุณใช้ค้นหากลับด้วย?(ตัวอย่าง?cake) แทน/มันเป็นรอบวิธีอื่น ๆ

หากมีการติดตั้งบนระบบของคุณคุณควรลองเรียกใช้vimtutorคำสั่งจากเทอร์มินัลของคุณซึ่งจะเริ่มบทช่วยสอนของคำสั่ง Vim พื้นฐาน

คำแนะนำเกี่ยวกับRob Wells*และ#ยังเกี่ยวข้องมาก


1
ดูเพิ่มเติมที่ปลั๊กอินค้นหาดัชนีดัชนีvim.org/scripts/script.php?script_id=1682
SergioAraujo

มีวิธีข้ามไปยังการแข่งขันถัดไปหรือไม่ (ไม่ใช่ในบรรทัดปัจจุบัน)
user13107

@ user13107: n และ N ทำงานกับบัฟเฟอร์ / ไฟล์ทั้งหมด คุณไม่ได้ จำกัด อยู่ที่บรรทัดปัจจุบัน
ซาเวียร์ต.

@XavierT ความคิดใด ๆ ฉันจะข้ามจำนวนผลลัพธ์ในการค้นหาได้อย่างไร ฉันหมายถึงตัวอย่างเช่นข้ามไปยังบรรทัดที่ 10 ที่ตรงกัน
GP cyborg

@GPcyborg: nเช่นเดียวกับตัวดำเนินการกลุ่มส่วนใหญ่สามารถนำหน้าด้วยตัวเลขเพื่อทำซ้ำคำสั่ง หากคุณพิมพ์10nมันจะย้ายไปที่ผลลัพธ์ที่ 10 (หลังจากที่เริ่มต้น) นอกจากนี้ยังใช้งานได้กับผู้ควบคุมการเคลื่อนไหวทุกคนเช่น3jการลง 3 บรรทัด
Xavier T.

210

ทางลัดที่มีประโยชน์ที่สุดใน Vim คือ IMHO คือ*กุญแจ

วางเคอร์เซอร์บนคำแล้วกด*ปุ่มและคุณจะข้ามไปยังอินสแตนซ์ถัดไปของคำนั้น

#ที่สำคัญไม่เหมือนกัน แต่มันกระโดดไปอินสแตนซ์ก่อนหน้าของคำว่า

มันเป็นการประหยัดเวลาอย่างแท้จริง


6
และในกรณีที่มันไม่ได้ชัดเจนnและNพาคุณไปข้างหน้าและข้างหลังผ่านการแข่งขันเมื่อคุณกด* *(หรือคุณสามารถกดค้างไว้*เพื่อไปข้างหน้าหรือ#ถอยหลังได้ แต่โดยทั่วไปแล้วการใช้คีย์ที่ปรับเปลี่ยนได้นั้นเหมาะสมที่สุด)
Herbert Sitz

3
@ เฮอร์เบิร์ตจริง ๆ แล้ว n และ N อย่าพาคุณไปข้างหน้าและย้อนกลับ ในฐานะที่เป็น @Xavier ระบุไว้ข้างต้น n คือต่อไปและ N คือก่อนหน้านี้ การควบคุมการค้นหาไปข้างหน้าและข้างหลังทำได้โดยระบุการค้นหาด้วยปุ่ม '/' และ '?' คีย์หรือด้วยปุ่ม '*' และปุ่ม '#'
Rob Wells

ฉันไม่คิดว่า * เป็นสิ่งที่มีประโยชน์ ... ส่วนใหญ่ฉันจะค้นหาคำศัพท์บางส่วน (ตัวอย่างเช่นส่วนหนึ่งของชื่อฟังก์ชัน) ฉันไม่ต้องการที่จะ/FuncมีมันพาฉันไปSomeFuncแล้วกด '*' เพื่อไปยังที่ถัดไปSomeFuncเมื่ออินสแตนซ์ต่อไปของการอยู่ในFunc SomeOtherFunc
weberc2

แม้เลวด้วย C ++ ฉันคิดว่ามันไม่ได้ไปจากวิธีการอุทธรณ์การดำเนินการวิธีการเพราะ/\<foo\>ไม่ตรงกับ"className::foo()"
ปึก

84

เมื่อผมเริ่มที่ฉันต้องการที่จะชมการสาธิต

วิธีการค้นหาใน Vim

  1. ชนิด /
  2. พิมพ์คำค้นหาเช่น "var"
  3. กด enter
  4. สำหรับการกดอินสแตนซ์ถัดไปn (สำหรับก่อนหน้า N )

2
การพิมพ์*ไม่ถูกต้อง aa aaaนั่นคือไฟล์ ค้นหา/aaคุณต้องจับคู่ ในการจับคู่แรกกด*เปลี่ยนคำค้นหา
แบร์นฮาร์ด

1
n ไม่ใช่ 'ถัดไป' แต่ "ค้นหาซ้ำครั้งสุดท้าย" ดังนั้นการป้อน? var จะเริ่มค้นหาจากตำแหน่งปัจจุบันของคุณสำหรับ 'var' และ 'N' คือ "ทำการค้นหาล่าสุดซ้ำในทิศทางตรงกันข้าม" ดังนั้นสำหรับตัวอย่างนี้ที่จะค้นหา 'var' จากตำแหน่งปัจจุบัน
Rob Wells



13

ตามที่กล่าวไว้มีหลายวิธีในการค้นหา:

/pattern
?pattern
* (and g*, which I sometimes use in macros)
# (and g#)

บวกกับการนำก่อนหน้า / ถัดไปด้วยและNn

คุณยังสามารถแก้ไข / จำประวัติการค้นหาของคุณโดยการดึงค่าการค้นหาพรอมต์ด้วย/แล้วรอบด้วย/C-p C-nมีประโยชน์มากกว่าคือq/ซึ่งจะพาคุณไปยังหน้าต่างที่คุณสามารถสำรวจประวัติการค้นหา

นอกจากนี้สำหรับการพิจารณาเป็นสำคัญทั้งหมด'hlsearch'(ประเภท:hlsเพื่อเปิดใช้งาน) สิ่งนี้ทำให้การค้นหารูปแบบของคุณหลายกรณีง่ายขึ้น คุณอาจต้องการทำให้การแข่งขันของคุณสดใสเป็นพิเศษด้วยสิ่งต่อไปนี้:

hi Search ctermfg=yellow ctermbg=red guifg=...

แต่คุณอาจจะคลั่งไคล้กับการจับคู่สีเหลืองคงที่ทั่วหน้าจอ :nohดังนั้นคุณมักจะพบว่าตัวเองใช้ นี่เป็นเรื่องธรรมดาที่การทำแผนที่เป็นไปตามลำดับ:

nmap <leader>z :noh<CR>

ฉันจำสิ่งนี้ได้อย่างง่ายดายzเนื่องจากฉันเคยพิมพ์อย่างต่อเนื่อง/zz<CR>(ซึ่งเป็นเหตุการณ์ที่เกิดขึ้นอย่างรวดเร็วเพื่อพิมพ์) เพื่อล้างการเน้นของฉัน แต่การ:nohทำแผนที่ดีกว่า


2
ถ้าคุณรู้สึกแรงบันดาลใจจากคุณควรเล่นกับq/ q:ทั้งสองมีประโยชน์จริง ๆ ! (ไม่เกี่ยวข้องกับคำถามนี้จริง ๆ )
คาเอลเลียต

ขอบคุณมีคาห์ ฉันรู้เกี่ยวกับ 'q:' อยู่แล้วแม้ว่าฉันจะไม่ได้ใช้มันมากนัก แต่ 'q /' ไม่ได้รับการศึกษาเป็นกลุ่มอย่างสมบูรณ์และฉันคิดว่าจะมีประโยชน์มากมาย
Stabledog

2

หากคุณกดCtrl+ Enterหลังจากกดบางสิ่งเช่น "/ wordforsearch" คุณจะพบคำว่า "wordforsearch" ในบรรทัดปัจจุบัน จากนั้นกดnสำหรับการแข่งขันถัดไป กดNก่อนหน้าการแข่งขัน


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