Cara Cari-dan-ganti Di Sebilangan Banyak Fail di Vim

Dalam artikel ini, anda akan belajar bagaimana mencari dan mengganti secara interaktif di banyak fail dengan hanya dua arahan, terima kasih kepada Vim.

Walaupun terdapat banyak kaedah untuk mencari dan mengganti kata dalam satu fail, apa yang anda lakukan apabila anda mempunyai rentetan untuk diperbaharui di beberapa fail yang tidak berkaitan, semuanya dengan nama yang berbeza? Anda memanfaatkan kekuatan alat baris perintah, tentu saja!

Pertama, anda perlu memasukkan findsemua fail yang ingin anda ubah. Menggabungkan permintaan carian yang berkesan findsebenarnya hanya dibatasi oleh imaginasi anda.

Berikut adalah contoh mudah yang menemui fail Python:

find . -name '*.py' 

The -nameCari ujian untuk corak, seperti semua fail berakhir dengan .py. Tetapi findboleh melakukan lebih banyak lagi dengan syarat ujian lain, termasuk -regexujian. Jalankan find --helpuntuk melihat banyak pilihan.

Selaraskan pencarian anda dengan menggunakan grephanya untuk mendapatkan fail yang mengandungi rentetan yang ingin Anda ubah, seperti dengan menambahkan:

grep -le '\' 

The -lpilihan memberikan anda hanya nama fail untuk semua fail yang mengandungi corak (ditandakan dengan -e) yang sepadan "ikan paus".

Anda juga boleh menggunakan Vim yang mengagumkan :bufdoyang membolehkan anda menjalankan perintah yang sama di pelbagai penyangga. Ia berfungsi secara interaktif dengan semua fail ini tanpa sedikit masa membuka, menyimpan, dan menutup setiap fail, satu demi satu.

Mari masukkan hasil find+ hebat anda grepke Vim dengan:

vim `find . -name '*.py' \ -exec grep -le '\' {} \;` 

Dengan menggunakan backtick-pengembangan untuk menyampaikan carian kami ke Vim membuka banyak penyangga yang siap digunakan. (Lakukan :h backtick-expansiondi Vim untuk lebih banyak lagi.)

Sekarang anda boleh menerapkan perintah Vim :bufdoke semua fail ini dan melakukan tindakan seperti pencarian-dan-ganti interaktif:

:bufdo %s/a whale/a bowl of petunias/gce 

Yang guntuk "global" akan berubah kejadian corak pada semua baris. The eakan menghilangkan kesilapan jika corak tidak dijumpai. The cpilihan membuat ini interaktif. Sekiranya anda merasa yakin, anda boleh menghilangkannya tanpa membuat perubahan.

Setelah selesai menjalani semua penyangga, simpan semua kerja yang telah anda selesaikan dengan:

:bufdo wq! 

Kemudian nikmati kejayaan masa dan usaha anda yang dijimatkan.