GNU/Linux >> Belajar Linux >  >> Linux

Cara Menemukan dan Mengganti Teks di Vim

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, gunakan g bendera. Anda dapat menentukan apakah Anda ingin pertandingan mengabaikan huruf besar/kecil, gunakan i bendera. Untuk mengonfirmasi setiap operasi pencarian dan penggantian secara manual, gunakan c 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.


Linux
  1. Cara Menemukan Jumlah File dalam Direktori dan Subdirektori

  2. temukan teks yang cocok dan ganti baris berikutnya

  3. Bagaimana cara menambahkan perintah di editor vim?

  1. Cara Menggunakan Perintah Grep untuk Menemukan Teks di File

  2. Menggunakan sed untuk menemukan dan mengganti file teks di Linux

  3. Cara menginstal Vim (vi) di Windows 10

  1. Menggunakan perintah Sed,ex &Perl untuk menemukan dan mengganti teks di Linux

  2. Bagaimana Mengintegrasikan Perintah Mv Setelah Menemukan Perintah?

  3. Cara mengecualikan direktori di find . memerintah