Ada beberapa cara untuk melakukan ini.
Di dalam Direktori Saat Ini
Jika Anda ingin melakukan pencarian / ganti di pohon proyek, Anda dapat menggunakan daftar argumen Vim .
Cukup buka Vim dan kemudian gunakan :args
perintah untuk mengisi daftar argumen. Anda dapat memasukkan beberapa nama file atau bahkan gumpalan.
Sebagai contoh, :args **/*.rb
secara rekursif akan mencari direktori file ruby saat ini. Perhatikan bahwa ini juga seperti membuka Vim dengan vim **/*.rb
. Anda bahkan dapat menggunakan perintah shell find
untuk mendapatkan daftar semua file di direktori saat ini dengan menjalankan:
:args `find . -type f`
Anda dapat melihat daftar args saat ini dengan menjalankannya :args
sendiri. Jika Anda ingin menambah atau menghapus file dari daftar, Anda dapat menggunakan perintah :argadd
atau :argdelete
masing-masing.
Setelah Anda puas dengan daftar tersebut, sekarang Anda dapat menggunakan :argdo
perintah Vim yang kuat yang menjalankan perintah untuk setiap file dalam daftar argumen::argdo %s/search/replace/g
Berikut ini beberapa kiat untuk mencari (berdasarkan beberapa komentar):
- Gunakan batas kata jika Anda ingin mencari "foo" tetapi bukan "foo_bar". Gunakan
\<
dan \>
susun di sekitar pola pencarian seperti::argdo %s/\<search\>/foobar/g
- Gunakan
/c
bendera pencarian jika Anda ingin Vim meminta konfirmasi sebelum mengganti istilah pencarian.
- Gunakan
/e
bendera pencarian jika Anda ingin melewati kesalahan "pola tidak ditemukan".
- Anda juga dapat memilih untuk menyimpan file setelah melakukan pencarian:
:argdo %s/search/replace/g | update
. Di sini, :update
digunakan karena hanya akan menyimpan file jika sudah berubah.
Buka buffer
Jika Anda sudah memiliki buffer terbuka yang ingin Anda lakukan pencarian / ganti, Anda dapat menggunakan :bufdo
, yang menjalankan perintah untuk setiap file dalam daftar buffer Anda ( :ls
).
Perintahnya sangat mirip dengan :argdo
: :bufdo %s/search/replace/g
Mirip dengan :argdo
dan :bufdo
, ada :windo
dan :tabdo
yang bertindak masing-masing pada windows dan tab. Mereka lebih jarang digunakan tetapi masih berguna untuk diketahui.
/c
bendera untuk mengkonfirmasi penggantian.