Anda menggunakan vim. Anda punya alat untuk melakukan ini.
Bisa ditebak, ada tujuh jawaban yang sudah mengatakan untuk digunakan grep
. Tetapi saya tampaknya menjadi satu-satunya orang yang sejauh ini telah memperhatikan dari pertanyaan Anda yang Anda gunakan vim
. Dengan demikian, meskipun Anda dapat menggunakan grep
dari dalam vim
, Anda juga dapat menggunakan vim
alat bawaan. Ini dipanggil melalui :vimgrep
perintah.
Untuk mencari "semua file sumber C di direktori saat ini untuk panggilan ke fungsi toUpperCase()
" satu ketik vim
perintah
:vimgrep "\<toUpperCase\_s*(" *.c
Daftar kecocokan yang dihasilkan secara otomatis dimuat ke dalam daftar perbaikan cepat, dapat diakses dengan salah satu dari (lihat bantuan on-line untuk perbedaan halus)
:copen
:cwin
Untuk menemukan definisi fungsi , bukan panggilan ke sana, ctags
adalah alat, seperti yang disebutkan dalam Gilles
jawaban , dalam hubungannya dengan perintah :tjump
atau :tselect
.
Mengapa menggunakan :vimgrep
?
Bantuan online ( :help grep
) menyebutkan beberapa alasan, yang saya tidak akan nuri di sini. Lebih jauh dari itu, bandingkan tindakan :vimgrep
dengan dietbuddha
jawaban . dietbuddha
Baris perintah memotong grep
proses individu untuk setiap file sumber C individu. Bahkan tidak digunakan xargs
untuk mengurangi overhead itu. Dan Anda masih harus mem-parsing output untuk memanggil editor teks Anda pada file sumber yang relevan setelah selesai. :vimgrep
tidak memotong beberapa proses tambahan sama sekali, dan menggunakan hasilnya adalah kesederhanaan itu sendiri. Hanya memilih salah satu entri dalam daftar perbaikan cepat yang dihasilkan secara otomatis menempatkan kursor pada baris yang relevan dari file sumber yang relevan.
Bahkan, ia melakukan persis apa yang Anda tuliskan dengan tangan, kecuali secara otomatis. Ini adalah cara otomatis untuk melakukan tindakan editor teks tersebut. Ini memuat file seolah-olah dimuat dengan tangan, mencarinya untuk ekspresi reguler (menggunakan sintaks ekspresi reguler yang sama yang sudah Anda gunakan di tempat lain vim
), mencatat tempat-tempat yang cocok, dan kemudian membongkar file.