คุณใช้เสียงเรียกเข้า คุณมีเครื่องมือในการทำสิ่งนี้ในตัว
grepคาดมีเจ็ดคำตอบแล้วพูดกับการใช้งาน แต่ฉันดูเหมือนจะเป็นคนเดียวจนถึงตอนนี้ที่สังเกตจากคำถามที่คุณใช้vimอยู่ ดังนั้นแม้ว่าคุณจะสามารถใช้งานได้grepจากภายในvimแต่คุณยังสามารถใช้vimเครื่องมือในตัว สิ่งนี้ถูกเรียกผ่าน:vimgrepคำสั่ง
ในการค้นหา "ไฟล์ต้นฉบับ C ทั้งหมดในไดเรกทอรีปัจจุบันสำหรับการเรียกใช้ฟังก์ชันtoUpperCase()" ให้vimพิมพ์คำสั่ง
:vimgrep "\<toUpperCase\_s*(" *.c
รายการผลลัพธ์ของการแข่งขันจะถูกโหลดโดยอัตโนมัติไปยังรายการโปรแกรมแก้ไขด่วนซึ่งสามารถเข้าถึงได้ด้วยวิธีใดวิธีหนึ่ง (ดูวิธีใช้ออนไลน์สำหรับความแตกต่างเล็กน้อย)
:copen
:cwin
หากต้องการค้นหาคำจำกัดความของฟังก์ชันแทนที่จะเรียกใช้ctagsเป็นเครื่องมือดังที่กล่าวไว้ในGillesคำตอบของคำตอบร่วมกับคำสั่ง:tjumpหรือ:tselect
ทำไมต้องใช้:vimgrep?
ความช่วยเหลือออนไลน์ ( :help grep) แจกแจงเหตุผลหลายประการซึ่งฉันจะไม่นกแก้วที่นี่ เพิ่มเติมให้กับผู้ที่เปรียบเทียบการกระทำของ:vimgrepกับที่ของ'คำตอบ dietbuddha dietbuddhaบรรทัดคำสั่งของส้อมgrepกระบวนการแต่ละกระบวนการสำหรับแต่ละไฟล์ต้นฉบับ C มันไม่ได้ใช้xargsเพื่อลดค่าใช้จ่าย และคุณยังต้องแยกวิเคราะห์เอาต์พุตเพื่อเรียกใช้ตัวแก้ไขข้อความในไฟล์ต้นฉบับที่เกี่ยวข้องเมื่อเสร็จสิ้น :vimgrepไม่แยกกระบวนการเพิ่มเติมหลายอย่างเลยและการใช้ผลลัพธ์ก็คือความเรียบง่ายนั้นเอง เพียงแค่เลือกรายการใดรายการหนึ่งในรายการ quickfix ผลลัพธ์วางตำแหน่งเคอร์เซอร์บนบรรทัดที่เกี่ยวข้องของไฟล์ต้นฉบับที่เกี่ยวข้อง
อันที่จริงแล้วมันทำสิ่งที่คุณเขียนด้วยมืออย่างแน่นอนยกเว้นโดยอัตโนมัติ นี่เป็นวิธีอัตโนมัติในการดำเนินการแก้ไขข้อความ มันโหลดไฟล์ราวกับว่าโหลดด้วยมือค้นหานิพจน์ทั่วไป (โดยใช้ไวยากรณ์นิพจน์ทั่วไปแบบเดียวกับที่คุณใช้อยู่ในที่อื่นvim) บันทึกตำแหน่งที่เกิดการแข่งขันแล้วยกเลิกการโหลดไฟล์