Linux

Cari dan Ganti dalam Vim / Vi

Cari dan Ganti dalam Vim / Vi

Artikel ini menerangkan cara mencari dan mengganti teks dalam Vim / Vi.

Vim adalah penyunting teks baris perintah yang paling popular. Ia terpasang pada macOS dan sebilangan besar pengedaran Linux. Mencari dan menggantikan teks dalam Vim adalah cepat dan mudah.

Cari Asas dan Ganti #

Di Vim, anda dapat mencari dan mengganti teks menggunakan : pengganti (: s) perintah.

Untuk menjalankan perintah dalam Vim, anda mesti berada dalam mod normal, mod lalai ketika memulakan penyunting. Untuk kembali ke mod biasa dari mod lain, tekan sahaja kekunci 'Esc'.

Bentuk umum arahan pengganti adalah seperti berikut:

: [range] s / pattern / string / [bendera] [kiraan] 

Perintah mencari setiap baris di [julat] Untuk corak, dan menggantikannya dengan a tali. [kiraan] adalah bilangan bulat positif yang menggandakan perintah.

Jika tidak [julat] dan [kiraan] diberikan, hanya corak yang terdapat pada baris semasa yang diganti. Garis semasa adalah garis di mana kursor diletakkan.

Contohnya, untuk mencari rentetan pertama 'foo' pada baris semasa dan menggantinya dengan 'bar', anda akan menggunakan:

: s / foo / bar / 

Untuk menggantikan semua kejadian corak carian pada baris semasa, tambahkan g bendera:

: s / foo / bar / g 

Sekiranya anda ingin mencari dan mengganti corak di keseluruhan fail, gunakan watak peratusan % sebagai julat. Karakter ini menunjukkan julat dari baris pertama hingga baris terakhir fail:

:% s / foo / bar / g 

Sekiranya tali bahagian dihilangkan, ia dianggap sebagai tali kosong, dan corak yang dipadankan dihapuskan. Perintah berikut menghapus semua contoh rentetan 'foo' pada baris semasa:

: s / foo // g 

Daripada watak slash (/), anda boleh menggunakan watak byte tunggal bukan alfanumerik lain kecuali sebagai pembatas. Pilihan ini berguna apabila anda mempunyai watak '/' dalam corak carian atau tali gantian.

: s | foo | bar | 

Untuk mengesahkan setiap penggantian, gunakan c bendera:

: s / foo / bar / gc 
ganti dengan bar (y / n / a / q / l / ^ E / ^ Y)? 

Tekan y untuk menggantikan perlawanan atau l untuk menggantikan perlawanan dan berhenti. Tekan n untuk melangkau pertandingan dan q atau Esc untuk berhenti penggantian. The a pilihan menggantikan perlawanan dan semua kejadian yang tinggal. Untuk menatal skrin ke bawah, gunakan CTRL + Y, dan untuk menatal ke atas, gunakan CTRL + E.

Anda juga boleh menggunakan ungkapan biasa sebagai corak carian. Perintah di bawah ini menggantikan semua baris bermula dengan 'foo' dengan 'Vim is the best':

:% s / ^ foo.* / Vim adalah yang terbaik / gc 

The ^ Simbol (karet) sepadan dengan permulaan garis dan .* sepadan dengan sebilangan watak.

Sensitiviti Kes #

Secara lalai, operasi carian peka huruf besar kecil; mencari "FOO" tidak akan sepadan dengan "Foo".

Untuk mengabaikan contoh corak carian, gunakan i bendera:

: s / Foo / bar / gi 

Cara lain untuk memaksa kes mengabaikan adalah dengan menambahkan \ c selepas corak carian. Sebagai contoh, / Linux \ c melakukan carian kes abaikan.

Sekiranya anda mengubah tetapan kes lalai dan anda ingin melakukan carian peka huruf besar kecil, gunakan Saya bendera:

: s / foo / bar / gi 

Huruf Besar \ C selepas corak juga memaksa pencarian padanan kes.

Julat Carian #

Apabila tiada julat ditentukan, perintah pengganti hanya beroperasi pada baris semasa.

Julatnya boleh menjadi satu garis atau jarak antara dua baris. Penentu garis dipisahkan dengan , atau ; watak. Julat boleh ditentukan menggunakan nombor garis mutlak atau simbol khas.

Sebagai contoh, untuk menggantikan semua kejadian 'foo' ke 'bar' di semua baris bermula dari baris 3 hingga baris 10 yang akan anda gunakan:

: 3,10s / foo / bar / g 

Julatnya termasuk, yang bermaksud bahawa baris pertama dan terakhir termasuk dalam julat.

Titik . watak menunjukkan garis semasa dan $ - dolar menandakan baris terakhir. Untuk menggantikan 'foo' di semua baris bermula dari baris semasa hingga yang terakhir:

:.,$ s / foo / bar / 

Penentu garis juga dapat diatur menggunakan simbol '+' atau '-', diikuti dengan angka yang ditambahkan atau dikurangkan dari angka baris sebelumnya. Sekiranya nombor selepas simbol dihilangkan, angka menjadi lalai ke 1.

Contohnya untuk mengganti setiap 'foo' dengan 'bar' bermula dari baris semasa dan empat baris seterusnya, taip:

:.,+4s / foo / bar / g 

Mengganti Seluruh Kata #

Perintah pengganti mencari corak sebagai rentetan, bukan keseluruhan perkataan. Jika, misalnya, Anda mencari "gnu", carian mencari padanan di mana "gnu" tertanam dalam kata yang lebih besar, seperti "cygnus" atau "magnum".

Untuk mencari keseluruhan perkataan, taip \< untuk menandakan permulaan perkataan, masukkan corak carian, taip \> untuk menandakan akhir perkataan:

Contohnya, untuk mencari perkataan "foo" yang akan anda gunakan \:

: s / \/ bar / 

Sejarah Pengganti #

Vim melacak semua arahan yang anda jalankan pada sesi semasa. Untuk melihat sejarah perintah pengganti sebelumnya, masukkan : s dan gunakan anak panah atas / bawah untuk mencari operasi pengganti sebelumnya. Untuk menjalankan perintah, tekan sahaja Masukkan. Anda juga boleh mengedit perintah sebelum menjalankan operasi.

Contoh #

Garis komen (tambah # sebelum baris) dari 5 hingga 20:

: 5,20s / ^ / # / 

Garis uncomment dari 5 hingga 20, kembalikan perubahan sebelumnya:

: 5,20s / ^ # // 

Gantikan semua contoh 'epal', 'oren', dan 'mangga' dengan 'buah':

:% s / epal \ | oren \ | mangga / buah / g 

Keluarkan ruang kosong di hujung setiap baris:

:% s / \ s \ + $ // e 

Kesimpulan #

Mencari dan mengganti adalah ciri kuat Vim, yang membolehkan anda membuat perubahan pada teks anda dengan cepat.

Jangan ragu untuk memberikan komen sekiranya anda mempunyai sebarang pertanyaan.

Cara Menunjukkan Overlay OSD dalam Aplikasi dan Permainan Linux Skrin Penuh
Bermain permainan skrin penuh atau menggunakan aplikasi dalam mod skrin penuh bebas gangguan dapat memisahkan anda dari maklumat sistem yang relevan y...
5 Kad Tangkap Permainan Teratas
Kita semua telah melihat dan menyukai streaming permainan permainan di YouTube. PewDiePie, Jakesepticye, dan Markiplier hanyalah beberapa pemain terat...
Cara Membangunkan Permainan di Linux
Satu dekad yang lalu, tidak banyak pengguna Linux akan meramalkan bahawa sistem operasi kegemaran mereka suatu hari nanti akan menjadi platform permai...