Bagaimana Anda mencari teks di Vim?
Tekan tombol /, ketik teks pencarian Anda dan tekan enter. Ini seperti perintah less.
Tetapi metode pencarian teks ini tidak memungkinkan Anda untuk mengganti hasil yang ditemukan.
Izinkan saya membagikan bagaimana Anda dapat menemukan dan mengganti di Vim .
:%s/foo/bar/gci
Perintah di atas akan menjalankan pencarian case-insensitive untuk menemukan semua kemunculan istilah pencarian Anda (foo) dengan istilah baru (bar). Dengan bendera c, ia meminta konfirmasi sebelum mengganti substitusi apa pun.
Biarkan saya menjelaskan secara detail dan menjelaskan semuanya dengan lebih jelas.
Menggunakan perintah pengganti untuk menemukan dan mengganti teks di Vim
Saya kira Anda sudah tahu bahwa untuk menjalankan perintah di Vim, Anda harus dalam mode normal (juga dikenal sebagai mode perintah). Tekan tombol Esc untuk masuk ke mode ini.
Vim memiliki perintah praktis :substitue
, juga dapat digunakan dengan versi yang lebih pendek :s
.
Di bawah ini adalah sintaks umum dari perintah pengganti:
:[range]s/{pattern}/{string}/[flags] [count]
Mari kita uraikan sintaks ini. Apa pun di antara tanda kurung siku '[]' adalah opsional.
range
:Bagian sintaks ini dapat digunakan jika Anda ingin substitusi antara baris tersebut. Jika Anda tidak menyebutkan rentang, itu hanya akan menggantikan teks pada baris saat ini . (Saya telah membagikan tabel untuk rentang)pattern
:Di sinilah Anda menentukan teks yang ingin Anda ganti.string
:Ini adalah string yang akan menggantikan pola.flags
:Untuk mengganti semua kemunculan pola pencarian, gunakang
bendera. Anda dapat menentukan apakah Anda ingin pertandingan mengabaikan huruf besar/kecil, gunakani
bendera. Untuk mengonfirmasi setiap operasi pencarian dan penggantian secara manual, gunakanc
bendera.count
:Jumlah baris untuk menggantikan teks.
Rentang | Deskripsi |
---|---|
. | Baris saat ini |
$ | Baris terakhir |
% | Semua baris |
x | Nomor baris x |
.,+x | Dari baris saat ini hingga x baris tambahan |
Contoh menemukan dan mengganti di Vim
Mari kita lihat beberapa contoh yang menunjukkan penggunaan perintah pengganti di Vim.
Di bawah ini adalah tangkapan layar dari file yang akan saya gunakan untuk mendemonstrasikan penggunaan perintah pengganti di Vim.
Penggantian teks dasar
Untuk contoh ini, saya memastikan bahwa string 'Halo' muncul beberapa kali dalam setidaknya satu baris dan beberapa kali dalam file.
Saya ingin mengganti 'Halo' dengan string 'HI'. Di bawah ini adalah perintah Vim untuk melakukannya:
:%s/Hello/HI/g
Ganti dengan konfirmasi
Untuk mengganti teks, tetapi ingin konfirmasi setiap kali melakukannya, Anda dapat menggunakan c
dalam perintah pengganti.
:%s/Hello/HI/gc
Seperti yang Anda lihat dari video, Vim meminta saya untuk konfirmasi setiap saat sebelum mengganti pola.
Anda juga memiliki prompt yang terlihat seperti baris berikut:
replace with HI (y/n/a/q/l/^E/^Y)?
Opsi dari prompt memiliki arti sebagai berikut:
- y:ya
- n:tidak
- a:semua
- q:keluar tanpa mengganti, tetapi tidak membatalkan setelah Anda mengganti teks
- l:ganti ini dan keluar (pikirkan 'terakhir')
- ^E:Gulir ke atas (tidak berfungsi di
vim-tiny
) - ^Y:Gulir ke bawah (tidak berfungsi di
vim-tiny
)
Pengganti case-insensitive
Ketika Anda ingin mengganti teks terlepas dari apakah itu dalam huruf besar atau kecil, dalam hal ini (haha) Anda harus menggunakan i
tandai di perintah pengganti.
:%s/hello/HI/gi
Jika Anda perhatikan, semua kemunculan 'hello' atau 'Hello' dan bahkan 'hELLO' diganti dengan 'HI'. Ini adalah substitusi pola yang tidak peka huruf besar/kecil.
Setiap 'halo' diganti dengan 'HI' meskipun sebagian besar 'halo' memiliki huruf besar 'H' di dalamnya.
Ganti teks dalam satu baris di Vim
Untuk mengganti teks dalam satu baris, kita perlu menentukan rentang yang membatasi ruang lingkup substitusi ke baris saat ini.
Untuk itu, sebaiknya gunakan .
deskripsi rentang.
:.s/Hello/HI/g
Seperti yang Anda lihat, hanya pola pada baris pertama yang diganti karena saya menggunakan titik '.' deskripsi rentang.
Kiat bonus:Menggunakan pembatas yang berbeda
Melihat sintaks perintah pengganti, saya menyebutkan bahwa pola dan string dipisahkan oleh garis miring '/'.
Tetapi bagaimana jika Anda memiliki teks dengan banyak garis miring di pola/string, seperti jalur, yang diulang di mana-mana di file? Melarikan diri dari garis miring bisa membosankan dan terkadang bisa dengan mudah dilewatkan.
Jadi, alih-alih menggunakan karakter garis miring sebagai pembatas, Anda dapat menggunakan pembatas yang berbeda.
Beberapa karakter pembatas yang saya lihat digunakan adalah #
, _
dan @
.
Berikut adalah gif yang menunjukkan demonstrasi penggunaan @
sebagai pembatas alih-alih /
.
Kesimpulan
Mengganti teks bisa menjadi kejadian umum dan Vim telah membantu Anda dengan cara yang ampuh untuk mencari dan mengganti pola dengan string. Anda bahkan dapat mencampur regex dalam perintah substitusi Vim.
Jika Anda tertarik untuk mempelajari lebih dari sekedar Vim Basics, saya sangat merekomendasikan menggunakan program ini oleh Jovica Ilic.