Linux

Temukan dan Ganti di Vim / Vi

Temukan dan Ganti di Vim / Vi

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.

Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah tambahan kedua belas untuk seri Tomb Raider - waralaba game aksi-petualangan yang dibuat oleh Eidos Montreal. Permain...
Cara Meningkatkan FPS di Linux?
FPS adalah singkatan dari Bingkai per detik. Tugas FPS adalah mengukur kecepatan bingkai dalam pemutaran video atau pertunjukan game. Dengan kata sede...
Game Lab Aplikasi Oculus Teratas
Jika Anda adalah pemilik headset Oculus maka Anda harus tahu tentang sideloading. Sideloading adalah proses menginstal konten non-toko di headset Anda...