เมื่อใดควรใช้: grep และ: vimgrep in vim?


17

ในกลุ่ม:makeทำให้ง่ายต่อการสร้างและแก้ไขข้อผิดพลาดและ:grepและพฤติกรรมเช่น:vimgrep :makeแต่ทำไมคุณถึงต้องการคำสั่งทั้งสองนี้? ทำไมไม่เพียงค้นหารูปแบบและเพียงกดn? อะไรคือข้อดีของพวกเขามากกว่าเพียงแค่การค้นหา?

คำตอบ:


17

อย่างที่หมอพูดว่า:

Vim has two ways to find matches for a pattern: Internal and external.

สรุป:vimgrepใช้กลไก grep ของ Vim เพื่ออ่านและค้นหาในไฟล์ :grepใช้คำสั่งภายนอกเพื่อให้ได้งานเดียวกัน

การ/ค้นหาสำหรับบัฟเฟอร์ปัจจุบันเท่านั้นในขณะที่:[vim]grepค้นหาผ่านรูปแบบของไฟล์ช่วยให้คุณสามารถค้นหาในโครงการทั้งหมดในครั้งเดียว

ดู:h grepข้อมูลเพิ่มเติมได้ที่


4

/?ค้นหาเฉพาะบัฟเฟอร์ปัจจุบันเท่านั้น:grepและ:vimgrepใช้ไฟล์ / patterns / globs ตามอำเภอใจเป็นอาร์กิวเมนต์


4

ประโยชน์ของการ:[vim]grepมากกว่า/?คือว่าผลที่ได้รับการใส่ลงไปในรายการ QuickFIX (หรือรายการสถานที่ถ้าคุณใช้:l[vim]grep) :clนี้หมายถึงว่าคุณสามารถดึงรายชื่อของการแข่งขันทั้งหมดโดยใช้ จากนั้นคุณสามารถใช้ตัวเลขเพื่อไปยังผลลัพธ์ที่คุณต้องการจากรายการโดยตรง

นอกจากนี้ยังหมายความว่าคุณสามารถใช้คำสั่งเดียวกันเพื่อค้นหาบัฟเฟอร์ปัจจุบัน:[vim]grep pattern %เพื่อค้นหาฐานรหัสทั้งหมดของคุณ:[vim]grep pattern pathเพื่อให้มีสมมาตรที่ดี

นอกจากนี้คุณสามารถแยกสาขาและใช้Silver Surfer / Ripgrepเพื่อให้การค้นหามีประสิทธิภาพมาก สิ่งเหล่านี้สามารถถูกแม็พกับ:[vim]grepคำสั่ง


0

มี 3 ข้อได้เปรียบหลักที่ฉันเห็น

  1. ใช้สอดคล้องregexเครื่องยนต์ / ไวยากรณ์:การใช้:grep/vimgrepช่วยให้คุณสามารถกำหนดgrepprgซึ่งสามารถกำหนดgrep/ack/agฯลฯ ใช้นี้คุณสามารถค้นหาบัฟเฟอร์ปัจจุบันหรือบัฟเฟอร์หลาย / ไฟล์โดยใช้สอดคล้องregexเครื่องยนต์ ในทางกลับกันถ้าคุณใช้ตัวเลือกของกลุ่ม/patternคุณจะติดอยู่กับเอ็นจิ้น regex เริ่มต้นของกลุ่มซึ่งมีไวยากรณ์ที่แตกต่างเมื่อเทียบกับextended regular expressionไวยากรณ์ ดังนั้นทุกครั้งที่คุณต้องค้นหานิพจน์คุณจะต้องคิด / จำไว้ว่าคุณควรใช้\)หรือเพียงแค่)และความแตกต่างอื่น ๆ สิ่งนี้อาจน่ารำคาญมาก ( /programming/3864467/whats-the-difference-between-vim-regex-and-normal-regex )

  2. vimgrep จะใส่รายการคำสั่ง / ตำแหน่งที่ตั้ง : ใช้:grep/vimgrepช่วยให้คุณสามารถเติมรายการค้นหา ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d )

    หากคุณต้องการใช้รายการตำแหน่งคุณสามารถใช้]qทางลัดเพื่อนำทางหากคุณมีปลั๊กอินที่ไม่มีการควบคุมของ Tim-Popes ( https://github.com/tpope/vim-unimpaired )

  3. การค้นหาที่ซับซ้อนขณะที่อยู่ในกลุ่ม : โดยทั่วไปหากคุณต้องทำการค้นหาที่ซับซ้อนคุณอาจต้องใช้บรรทัดคำสั่ง อย่างไรก็ตามหากคุณกำหนดgreprgอย่างเหมาะสมและใช้คำสั่งเช่น [1]

    : vim / pattern1 / find . -type f

    คุณสามารถค้นหาความซับซ้อนมากและแสดงผลการค้นหาในของคุณหรือlocation listquickfix list

[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/

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