GNU/Linux >> Belajar Linux >  >> Linux

Editor Vi dan Vim:12 Contoh Temukan dan Ganti yang Kuat


Photo Courtesy:B Zedan

Artikel ini adalah bagian dari seri Tips dan Trik Vi / Vim yang sedang berlangsung. Vim umumnya disebut sebagai editor teks, bukan pembuat teks. Mengapa ? Karena kami menghabiskan banyak waktu untuk mengedit teks yang ada daripada membuat teks baru. Dalam penyuntingan teks, substitusi teks/pola menjadi bagian penting.

Dalam artikel ini, mari kita tinjau cara melakukan fitur substitusi pola dan teks dasar dan lanjutan di Editor Vi dan Vim . Fitur-fitur ini dijelaskan menggunakan 12 contoh substitusi teks yang sangat praktis dan kuat .

Sintaks substitusi teks di dalam editor vim:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]


Berikut adalah tiga kemungkinan flag.

  1. [c] Konfirmasi setiap penggantian.
  2. [g] Ganti semua kemunculan di baris.
  3. [i] Abaikan huruf besar/kecil untuk polanya.

Contoh 1. Mengganti semua kemunculan teks dengan teks lain di seluruh file

Ini adalah penggunaan dasar dasar dari substitusi teks di dalam editor Vi. Bila Anda ingin teks tertentu diganti dengan teks lain di seluruh file, Anda dapat menggunakan urutan berikut.

:%s/old-text/new-text/g

  • %s - menentukan semua baris. Menentukan rentang sebagai '%' berarti melakukan substitusi di seluruh file.
  • g – menentukan semua kejadian di baris. Dengan bendera 'g', Anda dapat membuat seluruh baris diganti. Jika flag 'g' ini tidak digunakan maka hanya kemunculan pertama di baris saja yang akan diganti.

Contoh 2. Substitusi teks dengan teks lain dalam satu baris

Bila Anda ingin teks tertentu diganti dengan teks lain dalam satu baris dengan cara yang tidak peka huruf besar/kecil. Menentukan tidak ada rentang berarti, lakukan substitusi di baris saat ini saja. Dengan tanda 'i', Anda dapat membuat teks pencarian pengganti menjadi tidak peka huruf besar/kecil.

:s/I/We/gi

Contoh 3. Substitusi teks dengan teks lain dalam rentang baris

Dengan jangkauan, Anda hanya dapat membuat rentang garis yang akan terpengaruh dalam pergantian pemain. Menentukan 1, 10 sebagai range artinya, lakukan substitusi hanya pada baris 1 – 10.

:1,10s/helo/hello/g

Contoh 4. Substitusi teks dengan teks lain dengan pemilihan garis visual

Anda juga dapat memilih garis tertentu dengan memilih garis tersebut secara visual. Tekan CTRL + V dalam mode perintah, gunakan tombol navigasi untuk memilih bagian file yang ingin diganti. Tekan ':' yang secara otomatis akan terbentuk sebagai :'<,'> Kemudian Anda dapat menggunakan pengganti normal sebagai

:'<,'>s/helo/hello/g

Contoh 5. Substitusi teks dengan teks lain hanya sebanyak X baris ke-1

Menggunakan hitungan dalam substitusi, Jika Anda menentukan jumlah N dalam substitusi maka itu berarti melakukan substitusi dalam N baris dari posisi kursor saat ini. lakukan substitusi dalam 4 baris dari baris saat ini.

:s/helo/hello/g 4

Contoh 6. Ganti hanya seluruh kata dan tidak cocok sebagian

Mari kita asumsikan bahwa Anda hanya ingin mengubah seluruh kata 'miliknya' menjadi 'dia' dalam teks asli yang disebutkan di bawah ini. Jika Anda melakukan substitusi standar, selain mengubah miliknya menjadi dia, ini juga akan mengubah Ini menjadi Ada seperti yang ditunjukkan di bawah ini.

Substitusi Standar

Original Text: This is his idea

:s/his/her/g

Translated Text: Ther is her idea

Penggantian Seluruh Kata

Original Text: This is his idea

:s/\<his\>/her/

Translated Text: This is her idea

Catatan: :Anda harus mengapit kata dengan , yang akan memaksa substitusi untuk hanya mencari kata lengkap dan bukan sebagian yang cocok.

Contoh 7. Ganti kata1 atau kata2 dengan kata baru menggunakan ekspresi reguler

Dalam contoh berikut, itu akan menerjemahkan setiap kemunculan baik atau bagus akan diganti dengan mengagumkan.

Original Text: Linux is good. Life is nice.

:%s/\(good\|nice\)/awesome/g

Translated Text: Linux is awesome. Life is awesome.


Anda juga dapat melakukan substitusi dengan menentukan ekspresi reguler. Contoh berikut melakukan substitusi dari hey atau hi ke hai. Harap dicatat bahwa ini tidak menggantikan kata 'mereka', 'ini'.

:%s/\<\(hey\|hi\)\>/hai/g

  • \<– batas kata.
  • \| – “logis atau” (dalam hal ini hei atau hai)

Contoh 8. Temukan dan Ganti Interaktif di Editor Vim

Anda dapat melakukan pencarian dan penggantian interaktif menggunakan tanda 'c' di pengganti, yang akan meminta konfirmasi untuk melakukan substitusi atau melewatkannya seperti yang dijelaskan di bawah ini. Dalam contoh ini, editor Vim akan melakukan pencarian global kata 'mengagumkan' dan menggantinya dengan 'luar biasa'. Tapi itu akan melakukan penggantian hanya berdasarkan masukan Anda seperti yang dijelaskan di bawah ini.

:%s/awesome/wonderful/gc

replace with wonderful (y/n/a/q/l/^E/^Y)?
  • y – Akan menggantikan kata yang disorot saat ini. Setelah diganti secara otomatis akan menyorot kata berikutnya yang cocok dengan pola pencarian
  • n – Tidak akan menggantikan kata yang disorot saat ini. Tetapi secara otomatis akan menyorot kata berikutnya yang cocok dengan pola pencarian
  • a – Akan menggantikan semua kata yang disorot yang cocok dengan kriteria pencarian secara otomatis.
  • l – Ini hanya akan menggantikan kata yang disorot saat ini dan menghentikan upaya pencarian dan penggantian.

Contoh 9. Mengganti semua baris dengan nomor barisnya.

Ketika string dimulai dengan '\=', itu harus dievaluasi sebagai ekspresi. Menggunakan fungsi 'garis' kita bisa mendapatkan nomor baris saat ini. Dengan menggabungkan kedua fungsi tersebut, substitusi melakukan penomoran baris semua baris.

:%s/^/\=line(".") . ". "/g


Catatan: Ini berbeda dengan “:set number” dimana tidak akan menuliskan nomor baris ke dalam file. Tetapi ketika Anda menggunakan substitusi ini, Anda membuat nomor baris ini tersedia di dalam file secara permanen.

Contoh 10. Mengganti karakter khusus dengan nilai ekivalennya.

Mengganti ~ dengan nilai variabel $HOME.

Original Text: Current file path is ~/test/

:%s!\~!\= expand($HOME)!g

Translated Text: Current file path is /home/ramesh/test/

Anda dapat menggunakan fungsi perluasan untuk menggunakan semua variabel yang telah ditentukan sebelumnya dan yang ditentukan pengguna.

Contoh 11. Mengubah nomor urut dalam daftar bernomor saat memasukkan item baru

Asumsikan bahwa Anda memiliki daftar bernomor seperti berikut ini di dalam file teks. Dalam contoh ini, mari kita asumsikan bahwa Anda ingin menambahkan baris baru setelah Pasal 2. Untuk ini, Anda harus mengubah jumlah semua artikel lain yang sesuai.

vi / vim tips & tricks series
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 3: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X
Article 4: Vi and Vim Macro Tutorial: How To Record and Play
Article 5: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 6: How To Add Bookmarks Inside Vim Editor
Article 7: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 8: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 9: 8 Essential Vim Editor Navigation Fundamentals
Article 10: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 11: Transfer the Power of Vim Editor to Thunderbird for Email
Article 12: Convert Vim Editor to Beautiful Source Code Browser


Artikel ke-3 “Jadikan Vim sebagai IDE Perl Anda Menggunakan Plugin perl-support.vim” terlewatkan. Jadi ketika Anda ingin
menambahkannya, maka Anda ingin mengubah “Pasal 3” menjadi “Pasal 4”, “Pasal 4” menjadi “Pasal 5”, hingga “Pasal 12” menjadi “Pasal 13”.

Ini dapat dicapai dengan perintah substitusi vim berikut.

:4,$s/\d\+/\=submatch(0) + 1/

  • Rentang:4,$ – baris ke-4 hingga baris terakhir.
  • Pola Pencarian – \d\+ – urutan digit
  • Pola yang Akan Diganti – \=submatch(0) + 1 – mendapatkan pola yang cocok dan menambahkan 1 ke dalamnya.
  • Bendera – karena tidak ada bendera, secara default hanya menggantikan kemunculan pertama.


Setelah mengeksekusi pernyataan pengganti, file akan menjadi seperti ini, di mana Anda dapat
menambahkan Artikel ke-3.

vi / vim tips & tricks series
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 4: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X
Article 5: Vi and Vim Macro Tutorial: How To Record and Play
Article 6: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 7: How To Add Bookmarks Inside Vim Editor
Article 8: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 9: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 10: 8 Essential Vim Editor Navigation Fundamentals
Article 11: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 12: Transfer the Power of Vim Editor to Thunderbird for Email
Article 13: Convert Vim Editor to Beautiful Source Code Browser

Catatan:Periksa substitusi mengubah 3 menjadi 4, 4 menjadi 5 dan seterusnya. Sekarang kita dapat menambahkan baris baru yang menyebutkannya sebagai Pasal 3, dan tidak perlu melakukan perubahan manual.

Contoh 12. Mengganti kalimat yang diawali huruf besar. ( yaitu judul kasus seluruh dokumen ).

Saat memformat dokumen, membuat judul kasus juga merupakan hal yang penting. Itu dapat dilakukan dengan mudah dengan substitusi.

:%s/\.\s*\w/\=toupper(submatch(0))/g

  • \.\s*\w – Pola Pencarian – literal . ( titik ) diikuti oleh Nol atau lebih banyak spasi, dan karakter kata.
  • toupper – mengonversi teks yang diberikan menjadi huruf besar.
  • submatch(0) – mengembalikan pola yang cocok.

Teks sebelum penggantian:

Lot of vi/vim tips and tricks are available at thegeekstuff.com. reading
these articles will make you very productive. following activities can be
done very easily using vim editor.
        a. source code walk through,
        b. record and play command executions,
        c. making the vim editor as ide for several languages,
        d. and several other @ vi/vim tips & tricks.

Teks setelah penggantian (Perubahan dicetak tebal)

Lot of vi/vim tips and tricks are available at thegeekstuff.com. Reading
these articles will make you very productive. Following activities can be
done very easily using vim editor.
        a. Source code walk through,
        b. Record and play command executions,
        c. Making the vim editor as ide for several languages,
        d. And several other @ vi/vim tips & tricks.

Bacaan yang Disarankan

Peretasan Vim 101, oleh Ramesh Natarajan . Saya seorang pecandu baris perintah. Jadi, tentu saja saya penggemar berat editor Vi dan Vim. Beberapa tahun yang lalu, ketika saya menulis banyak kode C di Linux, saya biasa membaca semua tips dan trik editor Vim yang tersedia. Berdasarkan pengalaman editor Vim saya, saya telah menulis eBook Vim 101 Hacks yang berisi 101 contoh praktis tentang berbagai fitur canggih Vim yang akan membuat Anda cepat dan produktif dalam editor Vim. Bahkan jika Anda telah menggunakan Editor Vi dan Vim selama beberapa tahun dan belum membaca buku ini, bantulah diri Anda sendiri dan baca buku ini. Anda akan kagum dengan kemampuan editor Vim.

Artikel Editor Vim Keren

Berikut adalah beberapa tutorial editor Vi / Vim yang mengagumkan yang mungkin berguna bagi Anda.

  • Tutorial Makro Vi dan Vim:Cara Merekam dan Memutar
  • Peramban Firefox Turbocharge Dengan Fungsi Editor Vim Menggunakan Add-on Vimperator
  • Tutorial:Jadikan Vim sebagai IDE C/C++ Anda Menggunakan Plugin c.vim
  • Konversi Editor Vim ke Browser Kode Sumber Cantik untuk Bahasa Pemrograman Apa Pun

Catatan: Silakan berlangganan The Geek Stuff dan jangan lewatkan tips dan trik editor Vi dan Vim di masa mendatang .


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

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

  3. Menggunakan 'sed' Untuk Menemukan Dan Mengganti?

  1. Perbedaan Antara Editor Teks Vi Dan Vim Dijelaskan

  2. ReText – Editor Teks yang Kuat untuk Penurunan Harga dan reStructuredText

  3. Contoh Manipulasi Bash String – Panjang, Substring, Temukan dan Ganti

  1. Panduan Editor Teks ViM 101

  2. vim Tutorial dengan Contoh Perintah

  3. Temukan dan ganti teks dalam file di antara rentang baris menggunakan sed