เป็นกลุ่ม: คุณค้นหาข้อความได้อย่างมีประสิทธิภาพได้อย่างไร


30

เมื่อใดก็ตามที่คุณต้องการค้นหาข้อความเป็นกลุ่มคุณจะต้องพิมพ์/แล้วตามด้วยสตริงที่คุณต้องการ

อย่างไรก็ตามเมื่อสตริงมีความยาวและคุณต้องการทำหลาย ๆ ครั้งมีวิธีที่จะทำหรือไม่ไม่ต้องพิมพ์/andthisreallylongstringมากกว่าหนึ่งครั้ง?


12
ฉันขอแนะนำให้คุณอ่านVim Cheat Sheetหรือเคล็ดลับ Vimโดยสังเขป- คุณอาจพบวิธีอื่น ๆ
RedGrittyBrick

Protip: มีโปรแกรมแก้ไขข้อความสำหรับ Linux ที่ไม่ต้องใช้เวลาในการศึกษาหลายสัปดาห์
BlueRaja - Danny Pflughoeft

4
@ BlueRaja: ไม่แน่ใจว่านี่เป็นสถานที่ที่ดีสำหรับการทำสงครามบรรณาธิการ นอกจากนี้สำหรับสงคราม OS เนื่องจากยังมีโปรแกรมแก้ไขข้อความที่ดีและใช้งานง่ายสำหรับ Windows หรือ Mac OS ต้องศึกษาวิธีการที่มีประสิทธิภาพด้วยการแก้ไขจะทำให้คุณมีประสิทธิภาพมากขึ้นในที่สุดกว่าการเกาะติดกับคุณสมบัติพื้นฐาน
เบอนัวต์

คำตอบ:


61

กด "n" หลังจากคุณค้นหาเสร็จแล้วมันจะทำซ้ำการกระทำก่อนหน้า (ค้นหา)


12
นอกจากนี้Nจะไปยังผลลัพธ์ก่อนหน้า
จิน

15
นอกจากนี้การกดลูกศรขึ้นหลังจากกดปุ่ม/จะเป็นการจดจำคำค้นหาล่าสุด
bastibe

6
นอกจากนี้ยังq/จะแสดงหน้าต่างที่สามารถแก้ไขได้กับทุกคำค้นหาล่าสุด
UncleZeiv

7
นอกจากนี้การกดปุ่ม/และ Enter จะทำซ้ำการค้นหาก่อนหน้า การกดปุ่ม?และ Enter จะทำซ้ำการค้นหาก่อนหน้านี้ย้อนหลัง
Andy Lester

3
/Ctrl-Fเป็นอีกทางเลือกหนึ่งq/ที่อาจช่วยในการจำได้ง่ายขึ้น (ctrl-f == find) เช่นเดียวกับ q มันยังใช้งานได้กับโหมดคำสั่ง
idbrii

34

หากสตริงที่คุณค้นหาอยู่ใต้เคอร์เซอร์คุณสามารถพิมพ์*เพื่อค้นหามันไปข้างหน้าหรือ#เพื่อค้นหาย้อนกลับ


19

ฉันมักจะค้นหาสิ่งที่ชอบ;

  1. กด '/'
  2. ป้อนคำค้นหา
  3. กดปุ่มตกลง
  4. ใช้ 'n' และ 'N' เพื่อนำทางไปข้างหน้าและข้างหลังภายในการค้นหา

Vim เก็บประวัติการค้นหาของคุณดังนั้นหากคุณต้องการการค้นหาก่อนหน้านี้คุณสามารถกด '/' และใช้ปุ่มขึ้นและลงหรือ <Ctrl-P> <Ctrl-N> เพื่อเรียกดูประวัติการค้นหา

คุณสามารถใช้ '?' แทนที่จะใช้ '/' เพื่อค้นหาย้อนหลัง

ฉันชอบที่จะใช้:

set ignorecase smartcase

ตอนนี้มันจะเป็นการค้นหาที่คำนึงถึงขนาดตัวพิมพ์หากคุณมีอักขระตัวพิมพ์ใหญ่ในสตริงการค้นหา


15

สองเคล็ดลับเพิ่มเติมที่สามารถทำให้การค้นหาของคุณมีประสิทธิภาพมากขึ้นและset hlsearch set incsearch

  • set hlsearchดีเน้นผลการค้นหาของคุณ พิมพ์:nohเพื่อปิดเมื่อคุณไม่ต้องการใช้อีกต่อไป

  • set incsearch เปิดการค้นหาที่เพิ่มขึ้น

    สกัดจาก :help incsearch

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

    หากไม่มีincsearchผลลัพธ์ของคุณจะปรากฏหลังจากกด<CR>คำค้นหาของคุณเท่านั้น

    ตัวอย่าง:

    คุณต้องการค้นหา wildignore

    ป้อนคำอธิบายรูปภาพที่นี่

    คุณพิมพ์/wildและคู่แรกจะถูกเน้นโดยอัตโนมัติ

    ป้อนคำอธิบายรูปภาพที่นี่

    จากนั้นพิมพ์iและไปยังการแข่งขันที่ถูกต้องต่อไป

    ป้อนคำอธิบายรูปภาพที่นี่


13

เคล็ดลับอื่น ๆ ที่ยังไม่ครอบคลุม: การกดตัวอักษรqจากนั้น/จะแสดงรายการคำค้นหาก่อนหน้าของคุณ คุณสามารถแก้ไขได้เช่นเดียวกับบรรทัดอื่น ๆ ในเอกสารจากนั้นกด Enter เพื่อใช้งานซ้ำสำหรับการค้นหาใหม่


3
กำลังมองหาสิ่งนี้ นี่คือบันทึกย่อที่สำคัญและมากในหัวข้อ
cincodenada

8

หลังจากกด/เพื่อเริ่มการค้นหาคุณสามารถลูกศรขึ้นเพื่อเลื่อนดูประวัติการค้นหาของคุณ

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


7

เพียงแค่กดปุ่ม / ไม่มีข้อโต้แย้งใด ๆ ที่ตามมาไม่เหมาะกับคุณหรือไม่? ในทุกระบบของเราที่ทำให้เกิดการทำซ้ำในสิ่งที่การค้นหาครั้งสุดท้าย


6

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

v
e
y
/
Ctrl-r
0
Enter

(จากนั้นไปยังการแข่งขันถัดไปด้วย n หรือ N)

อย่างไรก็ตาม*(หรือ#) ทำสิ่งเดียวกันกับคำสั่งเหล่านี้ทั้งหมด ความแตกต่างเพียงอย่างเดียวคือคุณสามารถยืดหยุ่นได้ตามจำนวนคำที่คุณระบุ (แทนที่จะเป็น e ต่อท้ายคำคุณสามารถเลือกได้มากเท่าที่คุณต้องการเช่น 9l)


1
  • /string - ค้นหาสายอักขระล่วงหน้า
  • ?string - ค้นหาสตริง
  • n - ค้นหาอินสแตนซ์ถัดไปของสตริง
  • N - ค้นหาอินสแตนซ์ก่อนหน้าของสตริง

1

aVeryLongVariableNameInTheProgramจำนวนมากของเวลาที่ผมจะเขียนโปรแกรมต้องการค้นหา

ในกลุ่มคุณสามารถดึงข้อความได้อย่างง่ายดายในบัฟเฟอร์ / รีจิสเตอร์จากนั้นค้นหา:

  • วางเคอร์เซอร์บนอักขระตัวแรกของคำ
  • "Bywเพื่อดึงข้อความaVeryLongVariableNameInTheProgramลงในบัฟเฟอร์ B (เลือกรายการโปรดของคุณฉันใช้ B)
  • /^RB (สแลช, Ctrl-R, B) เพื่อวางบัฟเฟอร์ B บนบรรทัดค้นหา

แน่นอนคุณยังสามารถงัดจนถึงจุดสิ้นสุดของสาย ฯลฯ แทนการใช้คำเพียงคำเดียว - ฉันเพิ่งจะใช้ลำดับข้างต้นตลอดเวลา


1

นอกจากนี้คุณยังสามารถวางเนื้อหาของการลงทะเบียนใด ๆ ในการค้นหาพรอมต์โดยการกดCtrl+ Rและจากนั้นชื่อของการลงทะเบียน e กรัม / Ctrl+ 0REnter


ฉันคิดว่าคุณคำ
dotancohen

0

สตริงยาวที่คุณป้อนชื่อตัวแปรอยู่หรือไม่? หรือสายยาวที่อยู่ในข้อความของคุณ? จากนั้นกดปุ่ม*เพื่อค้นหาคำ / สตริงที่อยู่ใต้เคอร์เซอร์ของคุณ

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