Menggandakan kecepatan editing: Avy untuk melompat ke karakter, kata, atau baris dengan kode dua huruf, expand-region untuk memperluas seleksi secara struktural tanpa mouse, dan multiple-cursors untuk mengedit banyak tempat sekaligus dalam satu alur kerja yang terarah.

Episode 5 memberi kalian navigasi keyboard; episode 20 membuatnya kilat. Tiga paket — Avy, expand-region, dan multiple-cursors — mengotomatiskan gerakan yang paling sering kalian lakukan: melompat ke tempat tertentu, memilih teks dengan presisi, dan mengedit banyak titik sekaligus.
Mengapa penting? Kecepatan editing bukan soal kecepatan mengetik, melainkan soal jumlah langkah per tujuan. Avy memangkas "gerak → cari → klik" menjadi "tekan dua huruf". expand-region memangkas seleksi manual. Ketiganya adalah lapisan performa di atas fondasi episode 5.
Avy menampilkan penanda huruf pada semua target yang mungkin, dan kalian cukup menekan satu-dua huruf untuk melompat.
(use-package avy
:ensure t
:bind (("C-;" . avy-goto-char-timer)))C-; → ketik satu karakter (misal 'x')
→ setiap 'x' di layar diberi label huruf
→ tekan huruf label → point melompat ke sanaDaripada C-f C-f C-f... lima kali untuk melewati 20 karakter, kalian menekan C-; x k dan langsung berada tepat di karakter yang dituju. Untuk karakter yang jarang, satu huruf cukup; untuk yang sering muncul, dua huruf.
C-; l → pilih baris → label → lompat ke baris itu
M-x avy-goto-word-1 RET → lompat ke awal kataavy-goto-line sangat berguna di buffer log/output panjang: kalian melihat nomor baris yang relevan, tekan C-; l, ketik nomornya, dan point langsung di sana — mirip M-g g tapi lebih cepat karena tidak perlu mengetik penuh.
expand-region memperluas region secara struktural — dari karakter, kata, kalimat, paragraf, sampai blok sintaks — dengan menekan satu tombol berulang.
(use-package expand-region
:ensure t
:bind (("C-=" . er/expand-region)))(berdiri di tengah kata)
C-= → seleksi kata
C-= → seleksi kalimat
C-= → seleksi paragraf
C-= → seleksi blok fungsi (di mode prog)
C-= → seleksi seluruh fileUntuk menyusut: M-- diikuti C-=, atau C-- (negative prefix). expand-region memahami struktur bahasa lewat mode — di Python, seleksi tumbuh ke level indentasi berikutnya; di Lisp, ke s-expression berikutnya.
1. Letakkan kursor di dalam suatu ekspresi
2. C-= C-= C-= → seleksi sampai seluruh ekspresi terpilih
3. M-w / C-w / M-%Contoh nyata: ingin ganti satu string panjang dalam function call. C-= sampai region mencakup string itu, lalu langsung M-% atau edit — tanpa pernah menyentuh mouse atau menyeleksi manual.
multiple-cursors memungkinkan beberapa kursor aktif bersamaan — setiap yang kalian ketik muncul di semua titik.
(use-package multiple-cursors
:ensure t
:bind (("C-S-c C-S-c" . mc/edit-lines)
("C->" . mc/mark-next-like-this)))C-S-c C-S-c → mc/edit-lines: satu kursor per baris di regionSeleksi 5 baris, C-S-c C-S-c → 5 kursor aktif. Ketik // di awal → komentar muncul di semua 5 baris sekaligus.
C-> → mc/mark-next-like-this: tambah kursor di kemunculan berikutnyaLetakkan kursor di kata user, C-> → kursor kedua di user berikutnya; C-> lagi → ketiga. Ketik account → semua user berubah jadi account.
Tip
multiple-cursors kuat tapi bisa berbahaya: pastikan region/kursor yang dipilih sudah tepat sebelum mengetik. Kebiasaan aman: C-g membersihkan semua kursor sekaligus. Untuk rename symbol yang paham konteks bahasa, Eglot eglot-rename (episode 16) tetap pilihan lebih aman.
Gabungkan ketiganya untuk alur yang mengesankan:
1. C-; g a → lompat ke teks yang ingin diubah
2. C-= C-= → perluas seleksi ke kata
3. C-> C-> → tambah kursor di kemunculan berikutnya
4. (ketik pengganti) → semua kursor mengetik sekaligus
5. C-g → bersihkan kursor, selesaiLima langkah untuk mengganti semua kemunculan kata di layar — tanpa mouse, tanpa query-replace, tanpa berpindah konteks.
avy-all-windows (lompat lintas window) dengan bijak agar tidak bingung.C-= melompat terlalu jauh, C-- untuk menyusut seleksi.C-/ masih berfungsi tapi bisa membatalkan banyak.avy-goto-char di buffer help/read-only hanya memindah point (tidak bisa edit) — normal.C-=/C-;. Cek C-h k (episode 8) jika shortcut tidak berfungsi seperti harapan.Pada episode 20 ini, kalian telah menggandakan kecepatan editing.
Inti yang harus dibawa pulang:
C-; + karakter → label huruf → lompat presisi; C-; l untuk baris.C-= berulang untuk seleksi yang tumbuh secara struktural; C-- untuk menyusut.C-S-c C-S-c edit paralel per baris; C-> menambah kursor di kemunculan berikutnya.C-g selalu bisa membersihkan semua kursor — jangan panik.Di episode 21 selanjutnya, Emacs berubah menjadi life hub: email, IRC, & web dengan Gnus (email/news), ERC (IRC), EWW (web browser), dan elfeed (RSS) — serta cara menyiapkan salah satunya untuk komunikasi harian. Sampai jumpa di episode 21!