Artikel ini menjelaskan cara menemukan dan mengganti teks di Vim / Vi.
Vim adalah editor teks baris perintah paling populer. Itu sudah diinstal sebelumnya di macOS dan sebagian besar distribusi Linux. Menemukan dan mengganti teks di Vim cepat dan mudah.
Cari dan Ganti Dasar #
Di Vim, Anda dapat menemukan dan mengganti teks menggunakan :pengganti
(:s
) perintah.
Untuk menjalankan perintah di Vim, Anda harus dalam mode normal, mode default saat memulai editor. Untuk kembali ke mode normal dari mode lain, cukup tekan tombol 'Esc'.
Bentuk umum dari perintah pengganti adalah sebagai berikut:
:[range]s/pattern/string/[flags] [count]
Perintah mencari setiap baris di [jarak]
untuk sebuah pola
, dan menggantinya dengan tali
. [menghitung]
adalah bilangan bulat positif yang mengalikan perintah.
Jika tidak [jarak]
dan [menghitung]
diberikan, hanya pola yang ditemukan di baris saat ini yang diganti. Baris saat ini adalah baris tempat kursor ditempatkan.
Misalnya, untuk mencari kemunculan pertama string 'foo' di baris saat ini dan menggantinya dengan 'bar', Anda akan menggunakan:
:s/foo/bar/
Untuk mengganti semua kemunculan pola pencarian di baris saat ini, tambahkan g
bendera:
:s/foo/bar/g
Jika Anda ingin mencari dan mengganti pola di seluruh file, gunakan karakter persentase %
sebagai rentang. Karakter ini menunjukkan rentang dari baris pertama hingga terakhir file:
:%s/foo/bar/g
jika tali
bagian dihilangkan, itu dianggap sebagai string kosong, dan pola yang cocok dihapus. Perintah berikut menghapus semua contoh string 'foo' di baris saat ini:
:s/foo//g
Alih-alih karakter garis miring (/
), Anda dapat menggunakan karakter byte tunggal non-alfanumerik lainnya kecuali sebagai pembatas. Opsi ini berguna ketika Anda memiliki karakter '/' dalam pola pencarian atau string pengganti.
:s|foo|bar|
Untuk mengonfirmasi setiap penggantian, gunakan c
bendera:
:s/foo/bar/gc
ganti dengan bar (y/n/a/q/l/^E/^Y)?
tekan kamu
untuk mengganti korek api atau aku
untuk mengganti pertandingan dan berhenti. tekan tidak
untuk melewatkan pertandingan dan q
atau ESC
untuk keluar dari substitusi. Itu Sebuah
opsi menggantikan pertandingan dan semua sisa pertandingan. Untuk menggulir layar ke bawah, gunakan CTRL+Y
, dan untuk menggulir ke atas, gunakan CTRL+E
.
Anda juga dapat menggunakan ekspresi reguler sebagai pola pencarian. Perintah di bawah ini menggantikan semua baris yang dimulai dengan 'foo' dengan 'Vim is the best':
:%s/^foo.*/Vim adalah yang terbaik/gc
Itu ^
(tanda sisipan) simbol cocok dengan awal baris dan .*
cocok dengan sejumlah karakter apa pun.
Sensitivitas Huruf Besar #
Secara default, operasi pencarian peka huruf besar/kecil; mencari "FOO" tidak akan cocok dengan "Foo".
Untuk mengabaikan huruf besar/kecil untuk pola pencarian, gunakan saya
bendera:
:s/Foo/bar/gi
Cara lain untuk memaksa mengabaikan kasus adalah dengan menambahkan \c
setelah pola pencarian. Sebagai contoh, /Linux\c
melakukan pencarian kasus abaikan.
Jika Anda mengubah pengaturan huruf besar-kecil dan Anda ingin melakukan pencarian peka huruf besar-kecil, gunakan use saya
bendera:
:s/foo/bar/gi
Huruf besar \C
setelah pola juga memaksa pencarian kecocokan kasus.
Rentang Pencarian #
Ketika tidak ada rentang yang ditentukan, perintah pengganti hanya beroperasi di baris saat ini.
Rentang dapat berupa satu baris atau rentang antara dua garis. Penentu garis dipisahkan dengan ,
atau ;
karakter. Rentang dapat ditentukan menggunakan nomor baris absolut atau simbol khusus.
Misalnya, untuk mengganti semua kemunculan 'foo' menjadi 'bar' di semua baris mulai dari baris 3 hingga baris 10, Anda akan menggunakan:
:3,10s/foo/bar/g
Rentangnya inklusif, yang berarti bahwa baris pertama dan terakhir termasuk dalam rentang.
Titik .
karakter menunjukkan baris saat ini dan $
- dolar menandatangani baris terakhir. Untuk mengganti 'foo' di semua baris mulai dari baris saat ini hingga yang terakhir:
:.,$s/foo/bar/
Penentu garis juga dapat diatur menggunakan simbol '+' atau '-', diikuti dengan angka yang ditambahkan atau dikurangi dari nomor baris sebelumnya. Jika nomor setelah simbol dihilangkan, defaultnya adalah 1.
Misalnya untuk mengganti setiap 'foo' dengan 'bar' mulai dari baris saat ini dan empat baris berikutnya, ketik:
:.,+4s/foo/bar/g
Mengganti Seluruh Kata #
Perintah pengganti mencari pola sebagai string, bukan keseluruhan kata. Jika, misalnya, Anda mencari "gnu", pencarian menemukan kecocokan di mana "gnu" disematkan dalam kata yang lebih besar, seperti "cygnus" atau "magnum".
Untuk mencari seluruh kata, ketik \<
untuk menandai awal kata, masukkan pola pencarian, ketik \>
untuk menandai akhir kata:
Misalnya, untuk mencari kata "foo" Anda akan menggunakan \
:
:s/\/batang/
Riwayat Pengganti #
Vim melacak semua perintah yang Anda jalankan di sesi saat ini. Untuk menelusuri riwayat untuk perintah pengganti sebelumnya, masukkan :s
dan gunakan tombol panah atas/bawah untuk menemukan operasi pengganti sebelumnya. Untuk menjalankan perintah, cukup tekan Memasukkan
. Anda juga dapat mengedit perintah sebelum melakukan operasi.
Contoh #
Baris komentar (tambahkan #
sebelum garis) dari 5 hingga 20:
:5,20s/^/#/
Batalkan komentar dari 5 hingga 20, kembalikan perubahan sebelumnya:
:5,20s/^#//
Ganti semua contoh 'apel', 'jeruk', dan 'mangga' dengan 'buah':
:%s/apel\|jeruk\|mangga/buah/g
Hapus spasi putih di akhir setiap baris:
:%s/\s\+$//e
Kesimpulan #
Mencari dan mengganti adalah fitur hebat dari Vim, yang memungkinkan Anda membuat perubahan pada teks Anda dengan cepat.
Jangan ragu untuk meninggalkan komentar jika Anda memiliki pertanyaan.