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.

Tukar Poin Telkomsel Di Pepper Lunch

Beberapa minggu lalu saya pergi makan ke Pepper Lunch di Istana Plasa Bandung. Di kasir ada petunjuk tentang tukar poin Telkomsel. Si mbak kasir menjelaskan bahwa kami bisa menukarkan Telkomsel poin untuk mendapat voucher makan. Kalau tidak salah per 350 poin bisa ditukar dengan voucher senilai Rp50000,-. Prosesnya lumayan panjang, pertama saya harus dial USSD *700*111# terlebih dulu.

Tampilan menu USSDnya seperti ini :

Lalu saya dapat SMS notifikasi seperti ini.

Lalu kami harus mengulang proses yang sama (dial *700*111#) untuk melakukan verifikasi, ada menu verifikasi nomor 3 seperti tampilan menu USSD di atas. Pada tahap ini saya harus memasukkan kode outlet dari Pepper Lunch, si Mbak kasir yang memasukkan kode outlet Pepper Lunch tersebut. Setelah itu saya mendapat konfirmasi kembali dari Telkomsel lewat menu USSD tersebut seperti berikut ini :

Lumayan dengan begitu saya mendapat potongan Rp50000,- dari total harga pesanan. Katanya sih saya bisa menukar lebih dari 1x selama poin saya masih tersedia. Sebenarnya waktu itu saya masih punya cukup Telkomsel poin, tapi karena keburu lapar & malas mengulang proses penukaran, saya tidak ulangi lagi proses tukar poin tadi. Cukup senang dengan diskon Rp50000,- tadi. Ada beberapa outlet yang bekerja sama dengan Telkomsel untuk urusan tukar poin ini, tidak melulu outlet makanan contoh lainnya Ace Hardware. Sayangnya saat saya coba di Ace Hardware, katanya sedang ada gangguan jaringan dengan Telkomsel.