คุณใช้เสียงเรียกเข้า คุณมีเครื่องมือในการทำสิ่งนี้ในตัว
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
) บันทึกตำแหน่งที่เกิดการแข่งขันแล้วยกเลิกการโหลดไฟล์