Mengulang Perintah dengan Dot Command di Vim

Takagi Fujimaru 4 April 2018

Mengulang Perintah dengan Dot Command di Vim

Pembaca pasti pernah mendengar istilah don't repeat yourself.

Dalam dunia software engineering, istilah tersebut merupakan prinsip dari software development dimana kita fokus untuk mengurangi semua jenis pengulangan. Vim memiliki banyak cara untuk mengotomatiskan berbagai jenis pekerjaan sehingga kita tidak perlu melakukan aksi secara manual berulang kali.

Satu perintah Vim yang paling powerful untuk menghindari pengulangan adalah . ("the dot") command.

Dengan menekan tombol . (titik), di mode Normal akan mengulangi perintah Vim terakhir yang dilakukan.

Anggap kita ingin menghapus 5 kata di depan kursor. Untuk melakukannya kita bisa menekan 5dw. Tapi, kita masih harus menghitung jumlah angkanya secara manual.

Alternatif lainnya ialah dengan menggungkan dw untuk mengahpus satu kata, lalu menekan .... untuk mengulang perintah tersebut sebanyak 4 kali. Dalam kasus ini, kita mengulang perintah terakhir, dw, empat kali sehingga mendapat hasil yang sama tanpa harus mengulang jumlah katanya.

Jika menggunakan dd untuk menghapus sebuah baris, dan ingin menghapus 4 baris lagi, pembaca bisa langsung mengeksekusi 4. yang sama artinya dengan .....

Sangat penting untuk memahami apa saja yang tidak bisa diulang dengan dot command. Misal, perhatikan kode seperti di bawah ini:

my $i
my $learn
my $quickly

Kita posisikan kursor di baris pertama. Kita ingin menambah ; ke tiga baris tersebut. Perintah yang bisa dijalankan adalah A;<Esc>j.

  • A akan memposisikan kursor di akhir baris pertama dan masuk ke mode Insert.
  • ; untuk menulis karakter ; lalu tombol Esc untuk kembali ke mode Normal
  • j untuk pindah satu baris ke bawah.

Sekarang kursor ada di baris kedua. Jika pembaca menekan . sekali lagi untuk mengulangi perintah sebelumnya, maka tidak akan berhasil.

my $i;
my $learn;
my $quickly

Kita berhasil menulis ; tapi kursor masih di baris kedua. Artinya perintah yang diulang hanya A;<Esc>.

Mengapa ini terjadi? Hal ini terjadi karena dot command hanya mengulang apa yang mengubah konten di buffer (isi teks).

Perintah seperti j disebut dengan motions dan mereka tidak mengubah teks. Ia hanya menggerakkan kursor, sehingga tidak bisa diulang.

Diterjemahkan dari The "dot" command in Vim karya Jovica