Vim : Menghapus Ekstra Spasi Di Akhir Baris

Ada kalanya saya perlu menghapus semua spasi kosong di akhir semua baris (trailing whitespace). Dengan Vim saya bisa gunakan perintah :

:%s/\s\+$//g

Misalnya saya punya berkas teks seperti ini :

Pada contoh di atas semua baris saya beri garis merah, ada spasi kosong pada bagian bergaris kuning. Saya ingin semua baris itu hilang. Dengan menggunakan perintah tadi semua spasi ekstra di akhir baris akan otomatis terhapus. Lihat contoh pada baris ketiga, kursornya langsung berada pada bagian akhir baris di huruf “D” pada kata “ENTITYID”.

Vim : Search & Replace

Fitur penting dari sebuah editor teks di antaranya adalah kemampuan cari & ganti (search & replace). Bayangkan repotnya bila harus mengganti banyak kata (atau frase) satu persatu. Di editor Vim, saya biasa gunakan perintah berikut ini bila ingin melakukan search & replace teks tertentu :

:%s/<pattern>/<replacement>/g   

<pattern> maksudnya kata/frase yang ingin saya ganti sementara <replacement> adalah kata penggantinya. Misalnya saya punya berkas teks yang berisi data koneksi Oracle database seperti contoh berikut ini :

Saya ingin ganti informasi Oracle SID dari uimdb menjadi uimdbsit. Dengan menggunakan Vim, saya bisa mengedit satu persatu berkas tersebut lalu menjalankan perintah :

:%/uimdb/uimdbsit/g

Lalu tinggal Save dengan perintah :wq. Tapi sayangnya cara ini tidak praktis bila ternyata saya punya banyak sekali berkas. Cara yang paling sering saya gunakan adalah dengan bantuan perintah find, perl seperti ini :

find . -name "*pola nama file*" -exec perl -pi -e 's/<pattern>/<replacement>/g' {}\;

Contoh saat digunakan seperti ini berikut ini :

Perintah di atas bisa dimodifikasi untuk memanfaatkan fitur-fitur yang dimiliki perintah find. Misalnya fitur -maxdepth di atas berguna untuk membatasi area pencarian. Tanpa menggunakan opsi -maxdepth maka semua berkas berakhiran *.xml dalam semua sub-directori akan ikut terkena perubahan tadi. Misalnya contoh di bawah ini, ada banyak berkas *.xml dalam 3 sub-direktori (ditunjukkan dengan garis merah).

Karena saya hanya ingin memodifikasi berkas *.xml yang berada tepat di bawah direktori jdbc, saya harus menggunakan opsi maxdepth 1. Opsi tersebut akan membatasi area pencarian pada direktori itu saja (current directory) tanpa menyentuh berkas *.xml lain dalam setiap sub-direktori.

Vim : Hapus Semua Baris Sesuai Pola Tertentu

Saat menyunting berkas teks dengan Vim, biasanya saya perlu cara cepat untuk menghapus semua baris yang mengandung pola (pattern) tertentu. Cara lama saya tinggal search polanya lalu hapus satu persatu barisnya dengan perintah dd. Tapi cara ini kurang praktis dan rentan error bila mata sudah lelah mungkin saya bisa melewatkan sejumlah baris. Shortcut yang saya temukan dari Internet adalah dengan menggunakan perintah ini :

:g/<pattern>/d

Singkat perintahnya, cukup awali dengan :g/, diikuti dengan pola yang ingin kita temukan, dan terakhir diakhiri dengan /d.

Contoh penggunaannya seperti ini beberapa tangkapan layar berikut ini. Misalnya saya sedang menyunting sebuah berkas PL/SQL & ingin menghapus semua baris yang memiliki kata-kata “execute immediate”.

Saya masuk dulu ke command mode dengan menekan tombol Escape beberapa kali, lalu saya tinggal gunakan perintah tadi :g/execute immediate/d seperti terlihat di bawah ini :

Maka otomatis semua baris dari bagian awal sampai akhir dokumen yang mengandung kata “execute immediate” otomatis terhapus.

Saya ingin kumpulkan semua postingan tentang Vim dengan Tag : Vim. Dengan mengumpulkan aneka shortcut seperti ini, saya merasa jadi lebih produktif untuk mengedit berkas teks dengan Vim daripada dengan menggunakan editor visual lainnya.