membedah konsep prefix key sebagai gerbang seluruh perintah tmux, cara mengganti prefix default Ctrl+B ke Ctrl+A, Alt, atau CapsLock, peta keybinding wajib navigasi pane, zoom, detach, help, dan command prompt.

Di episode 3 sebelumnya kita membahas siklus hidup session, window, dan pane — bagaimana tmux membungkus proses-proses kalian dalam satu pohon sesi yang tetap hidup meski terminal ditutup. Semua aksi itu tidak muncul begitu saja: tmux adalah mesin yang dipicu oleh keybinding, dan setiap keybinding berjalan dari satu gerbang bernama prefix key. Episode ini membedah gerbang tersebut secara utuh, karena pemahaman tentang prefix adalah perbedaan antara menghafal shortcut dan memahami cara kerja tmux.
Prefix key adalah alasan utama tmux terasa tidak ramah di hari pertama, sekaligus alasan ia terasa sangat kuat di minggu kedua. Sekali kalian memahami bahwa tmux hidup di antara kalian dan shell — ia menyedot sebagian input keyboard, menafsirkannya sebagai perintah, dan meneruskan sisanya ke aplikasi di dalam pane — maka keybinding apa pun yang kalian temui di dokumentasi menjadi mudah dibaca. Di tmux 3.7b (rilis stabil terbaru saat artikel ini ditulis) perilaku ini tidak berubah sama sekali, dan justru itulah kekuatannya: yang kalian pelajari hari ini masih berlaku bertahun-tahun ke depan.
Mengapa bagian ini penting dalam pekerjaan nyata? Karena di tengah insiden produksi, di server staging yang sesak log, atau saat SSH ke server yang harus dijaga tetap hidup, kalian tidak punya waktu membuka cheat sheet. Keybinding harus menempel di otot. Di episode ini kita membahas konsep prefix key, perbedaan keybinding ber-prefix dengan keybinding normal, cara mengganti prefix ke Ctrl+A, Alt, atau CapsLock, peta keybinding wajib yang harus kalian hafal, serta dua jalan untuk menemukan sendiri keybinding yang kalian lupa: prefix + ? dan tmux list-keys. Mari mulai.
Prefix key adalah tombol gerbang: perintah tmux tidak dikirim langsung ke aplikasi, melainkan menunggu kalian menekan prefix lebih dulu, lalu tombol perintah. Bayangkan seperti tombol Shift — ia tidak melakukan apa-apa sendirian, tetapi mengubah makna setiap huruf yang kalian tekan setelahnya. prefix + c berarti "buat window baru", sementara menekan c tanpa prefix berarti mengetik huruf c biasa ke shell. Satu tombol, dua makna, dibedakan oleh ada atau tidaknya prefix.
Default prefix tmux adalah Ctrl+B. Alasannya historis: Ctrl+B tidak dipakai oleh shell bash untuk navigasi yang umum dipakai orang (meski readline mengenalnya sebagai "move backward one character"), sehingga risiko tabrakan dengan aplikasi di dalam pane relatif rendah. Kekurangannya jelas: posisinya di pojok kiri bawah keyboard memaksa tangan bergerak cukup jauh dari home row, dan bagi pengguna yang terbiasa GNU Screen, kombinasi Ctrl+A terasa lebih alami. Konsekuensinya, hampir semua pengguna tmux menyesuaikan prefix di awal — dan itulah materi di bagian berikutnya.
Satu detail teknis yang perlu kalian pahami: setelah kalian menekan prefix, tmux membuka jendela waktu (timing window) menunggu tombol berikutnya. Tekan prefix lalu c secara berurutan, bukan bersamaan — jika kalian menekan Ctrl+B dan C dalam satu ketukan yang sama, kemungkinan besar yang terbaca hanyalah Ctrl+C (interrupt). Inilah kesalahan paling umum pemula dan sumber banyak frustrasi.
Tidak semua keybinding tmux membutuhkan prefix. Tmux mengorganisasi keybinding ke dalam key tables, dan table yang paling sering kalian lihat adalah table prefix. Binding di dalam table ini baru aktif setelah prefix ditekan. Ada juga keybinding tanpa prefix yang ditandai bendera -n (singkatan dari "no prefix") — binding ini bekerja langsung begitu tombol ditekan, tanpa menunggu gerbang.
| Jenis | Sintaks | Contoh | Kapan Dipakai |
|---|---|---|---|
| Ber-prefix | bind-key KEY perintah | bind c new-window | Aksi yang jarang ditekan, namespace aman |
| Tanpa prefix | bind-key -n KEY perintah | bind -n F9 new-window | Tombol yang tidak dipakai aplikasi, misal F1-F12 |
Keybinding tanpa prefix sangat berguna untuk tombol fungsi yang jarang dipakai aplikasi terminal — misalnya bind -n F8 run-shell "htop". Tetapi gunakan dengan hati-hati: setiap binding -n adalah kandidat konflik dengan aplikasi yang berjalan di dalam pane. Shell bash, vim, htop, dan lain-lain punya keybinding mereka sendiri; jika keduanya bentrok, salah satu akan "menelan" tombol tersebut. Prinsip umumnya: default tmux menggunakan prefix untuk meminimalkan konflik ini, dan kalian hanya boleh melepaskan prefix untuk tombol yang benar-benar tidak dipakai siapa pun.
Mengubah prefix adalah ritual pertama yang dilakukan hampir semua pengguna tmux, dan keputusan ini layak dipikirkan matang karena akan menemani kalian bertahun-tahun. Ada tiga arah yang umum dipilih, masing-masing dengan trade-off sendiri:
readline (Ctrl+A di bash berarti "lompat ke awal baris"). Keuntungannya, jika kalian migrasi dari GNU Screen, otot sudah terlatih.M-a atau M-q. Alt jarang dipakai aplikasi modern, sehingga konflik minim. Kekurangannya, sebagian terminal membutuhkan pengaturan agar Alt berperilaku sebagai meta key.Ctrl di level sistem operasi (misalnya xcape di Linux atau Karabiner-Elements di macOS), lalu memakai Ctrl+A sebagai prefix. Ini solusi paling ergonomis, tetapi membutuhkan setup di luar tmux.Apapun pilihan kalian, mekanisme di tmux sama: ganti opsi prefix, hapus binding lama, dan definisikan send-prefix.
Berikut konfigurasi standar untuk berpindah dari Ctrl+B ke Ctrl+A:
set -g prefix C-a
unbind C-b
bind C-a send-prefixKetiga baris itu punya peran yang saling melengkapi. set -g prefix C-a mengganti prefix key. unbind C-b membuang keybinding lama — tanpa baris ini, Ctrl+B dan Ctrl+A dua-duanya menjadi prefix, yang membingungkan. Baris terakhir adalah yang paling sering dilupakan: bind C-a send-prefix mendefinisikan "prefix berulang", yaitu ketika kalian menekan Ctrl+A dua kali, karakter Ctrl+A mentah diteruskan ke aplikasi di dalam pane. Ini penting karena banyak aplikasi di dalam tmux — terutama readline dan vim — memakai Ctrl+A untuk navigasi. Tanpa send-prefix, kalian kehilangan kemampuan mengirim Ctrl+A literal ke aplikasi tersebut.
Pola yang sama berlaku untuk pilihan Alt: set -g prefix M-a, unbind C-b, bind M-a send-prefix. Perhatikan bahwa send-prefix selalu dipasangkan dengan prefix baru, bukan dengan yang lama.
Tip
Untuk bereksperimen tanpa mengedit file dulu, kalian bisa mengubah prefix langsung dari command prompt: tekan prefix + : lalu ketik set -g prefix C-a. Perubahan langsung aktif di session itu. Setelah yakin, pindahkan ke ~/.tmux.conf (yang akan kita bahas tuntas di episode 6) supaya permanen dan tersinkron di semua mesin kalian.
| Prefix | Keunggulan | Kelemahan | Konflik Umum |
|---|---|---|---|
Ctrl+B (default) | Bawaan, tidak perlu setup | Jauh dari home row | readline (move backward) |
Ctrl+A | Dekat home row, familiar dari GNU Screen | Bertabrakan dengan shell | readline (move to line start) |
Alt (Meta) | Minim konflik | Butuh terminal mendukung meta key | Beberapa aplikasi TUI |
CapsLock→Ctrl + Ctrl+A | Paling ergonomis | Setup di luar tmux | Tidak ada |
Setelah memahami konsepnya, saatnya mengisi memori otot. Jangan menghafal seluruh daftar — hafal peta ini dulu, dan biarkan prefix + ? menolong kalian di sela-sela.
Pane dan window adalah ruang kerja harian kalian. Untuk membuat ruang baru: prefix + % membagi pane secara vertikal (ke kanan), prefix + " membagi secara horizontal (ke bawah). Untuk berpindah antar pane, prefix + panah memindahkan fokus ke arah yang dituju, dan prefix + o memindahkannya dalam urutan dibuatnya. Untuk window, prefix + n dan prefix + p berpindah ke window berikutnya/sebelumnya, sementara prefix + 0 sampai prefix + 9 melompat langsung ke window berdasarkan nomornya.
prefix + Ctrl+panah menyesuaikan ukuran pane aktif satu sel ke arah tersebut — tahan untuk resize terus-menerus. prefix + Alt+panah melakukannya lima sel sekaligus. Ketika kalian butuh fokus total ke satu pane — misalnya membaca log error yang panjang — prefix + z melakukan zoom: pane aktif membesar memenuhi layar dan sisanya disembunyikan. Tekan prefix + z lagi untuk mengembalikan tata letak. Dan prefix + d melepaskan (detach) kalian dari session tanpa menghentikan proses di dalamnya — fondasi dari semua workflow produksi yang kita bahas di episode 3.
Dua keybinding yang paling menyelamatkan adalah prefix + ? dan prefix + :. prefix + ? menampilkan seluruh keybinding aktif dalam copy mode — bisa digulir dengan tombol panah, dan q untuk keluar. prefix + : membuka command prompt tmux, tempat kalian menjalankan perintah tmux apa pun secara langsung, seperti new-window, set -g prefix C-a, atau source-file ~/.tmux.conf. Keduanya adalah jaring pengaman: ketika kalian lupa sesuatu, tmux tidak pernah menyembunyikannya dari kalian.
| Keybinding | Aksi |
|---|---|
prefix + c | Membuat window baru |
prefix + % | Split pane vertikal |
prefix + " | Split pane horizontal |
prefix + panah | Pindah fokus ke pane sesuai arah |
prefix + o | Pindah fokus ke pane berikutnya |
prefix + n / p | Pindah ke window berikutnya / sebelumnya |
prefix + z | Zoom / unzoom pane aktif |
prefix + Ctrl+panah | Resize pane aktif 1 sel |
prefix + Alt+panah | Resize pane aktif 5 sel |
prefix + d | Detach dari session |
prefix + ? | Tampilkan daftar semua keybinding |
prefix + : | Buka command prompt tmux |
prefix + / } | Swap posisi pane ke kiri / kanan |
Dua jalan ini membuat kalian tidak perlu menghafal semua keybinding, karena tmux selalu bisa menunjukkan isi kamusnya. prefix + ? adalah cara interaktif: ia membuka daftar lengkap dalam copy mode, siap digulir. tmux list-keys adalah cara programatik — keluarannya adalah teks biasa yang bisa difilter, dipelajari, bahkan dijadikan bahan otomasi.
tmux list-keys
tmux list-keys | rg "new-window"
tmux -VBaris kedua menunjukkan pola yang sangat berguna: karena list-keys menghasilkan teks, kalian bisa menyaringnya dengan rg. Contoh, untuk menemukan semua keybinding yang melibatkan window: tmux list-keys | rg "window". Untuk hanya melihat table prefix: tmux list-keys -T prefix. Output baris pertama — seperti bind-key -T prefix c new-window — adalah bentuk kanonik yang sama persis dengan sintaks di file konfigurasi, sehingga membaca output ini sekaligus belajar menulis konfigurasi.
Important
tmux list-keys hanya menampilkan keybinding yang aktif pada server saat itu. Jika kalian mengubah konfigurasi tapi lupa me-reload (yang akan kita pelajari di episode 6), daftar ini tidak akan mencerminkan perubahan kalian. Biasakan menjalankan source-file sebelum memeriksa list-keys, agar apa yang kalian baca sesuai dengan yang kalian tulis.
Ctrl+B lalu c harus berurutan dengan jeda singkat, bukan digabung. Menggabung keduanya biasanya terbaca sebagai Ctrl+C (interrupt) oleh shell.unbind C-b. Prefix lama tetap aktif, sehingga kalian mendapat dua gerbang yang saling menabrak. Selalu ikuti pola set -g prefix, unbind, lalu bind ... send-prefix.c, %, panah, z, d. Biarkan prefix + ? menjadi jaring pengaman, dan sisanya menempel sendiri seiring penggunaan.-n (misal tombol F-baris) bekerja tanpa prefix. Jika sebuah tombol tampak "menyala" di aplikasi kalian, cek dulu apakah ada binding -n yang menangkapnya dengan tmux list-keys | rg "^-n".Ctrl+A ke screen atau readline), gunakan prefix dua kali lewat send-prefix, bukan menekan prefix sekali lagi.~/.tmux.conf tidak otomatis aktif. Sumber ulang dengan tmux source-file ~/.tmux.conf, dan di episode 6 kita akan memasang keybinding prefix + r supaya reload cukup satu ketukan.Episode ini meletakkan fondasi interaksi kalian dengan tmux. Kalian memahami bahwa prefix key adalah gerbang yang membedakan "mengetik ke aplikasi" dari "memberi perintah ke tmux", tahu cara membaca keybinding ber-prefix vs tanpa prefix (-n), dan mampu mengganti prefix default Ctrl+B ke Ctrl+A, Alt, atau CapsLock dengan pola set -g prefix + unbind + send-prefix. Kalian juga membawa peta keybinding wajib — navigasi pane dan window, resize, zoom prefix + z, detach prefix + d, help prefix + ?, dan command prompt prefix + : — plus dua alat penemuan yang tidak akan pernah membuat kalian tersesat.
Poin yang harus kalian bawa:
prefix.-n bekerja tanpa prefix dan harus digunakan hemat karena berisiko konflik dengan aplikasi.set -g prefix, unbind yang lama, bind ... send-prefix.c, %, panah, z, d); sisanya dicari lewat prefix + ?.tmux list-keys adalah kamus programatik yang bisa difilter dengan rg.Sekarang kalian sudah bisa bergerak di dalam tmux tanpa tersesat. Di episode 5 kita masuk ke wilayah yang membedakan tmux dari terminal biasa: copy mode, scrollback, dan manajemen clipboard — cara menelusuri ribuan baris output, menyalin teks dengan gaya vi, dan membawa hasilnya keluar ke clipboard sistem. Sampai jumpa di episode 5!