Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.
01Kenapa Shift+Enter mengirim alih-alih menyisipkan baris baru di Claude Code?
Dukungannya berbeda per terminal. Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, dan Windows Terminal bekerja tanpa setup. VS Code, Cursor, Devin Desktop, Alacritty, dan Zed butuh perintah /terminal-setup dijalankan sekali. gnome-terminal dan IDE JetBrains tidak mendukungnya — pakai Ctrl+J atau backslash diikuti Enter, yang bekerja di mana saja.
02Bagaimana mendapat peringatan saat Claude Code menyelesaikan tugas?
Secara default Claude Code mengirim notifikasi desktop hanya di Ghostty, Kitty, dan iTerm2, dan iTerm2 butuh alert serta alert dari escape sequence diaktifkan di setelannya sendiri. Di terminal lain mana pun, setel preferredNotifChannel ke terminal_bell, atau konfigurasikan sebuah Notification hook untuk suara maupun perintah kustom.
03Konfigurasi tmux apa yang dibutuhkan Claude Code?
Tiga baris di ~/.tmux.conf: allow-passthrough on, extended-keys on, dan fitur terminal extkeys. Baris passthrough membuat notifikasi dan pembaruan progres sampai ke terminal luar alih-alih ditelan tmux, dan baris extended-keys membuat tmux bisa membedakan Shift+Enter dari Enter biasa.
04Kenapa Backspace menghapus satu kata utuh di Claude Code pada Windows?
Terminal Anda mengirim kode kontrol yang dibaca Claude Code sebagai tombol hapus kata. Setel CLAUDE_CODE_BS_AS_CTRL_BACKSPACE ke 0 dan baik Backspace maupun Ctrl+H menghapus satu karakter saja. Kalau Anda punya masalah sebaliknya di macOS atau Linux, setel variabel yang sama ke 1.
05Bagaimana membuat tema kustom di Claude Code?
Simpan sebuah file JSON di ~/.claude/themes/ dengan name opsional, preset base seperti dark atau dark-daltonized, dan peta overrides berisi token warna. Nama file tanpa .json menjadi slug-nya. Token tak dikenal dan nilai tidak valid diabaikan, jadi salah ketik tidak bisa merusak tampilan, dan foldernya diawasi sehingga pengeditan berlaku tanpa restart.
Claude Code bekerja di terminal mana pun tanpa konfigurasi. Setting di halaman ini ada untuk gejala spesifik: Shift+Enter yang mengirim alih-alih menyisipkan baris baru, shortcut tombol Option yang diam di macOS, tidak adanya peringatan saat Claude selesai, dan Backspace yang menghapus satu kata utuh di Windows. Masing-masing punya perbaikan satu baris.
Saya menghabiskan sepekan menekan Ctrl+J untuk baris baru karena Shift+Enter mengirimkan prompt saya yang masih setengah jadi pada percobaan pertama, dan saya mencatatnya sebagai cara kerja perkakas ini. Bukan begitu. Terminal saya termasuk segelintir yang butuh satu perintah dijalankan sekali, dan perintah itu sejak awal memang tersedia.
Konfigurasi terminal untuk Claude Code bukan tutorial yang Anda kerjakan berurutan, melainkan indeks yang Anda buka ketika ada sesuatu yang berulah. Tulisan ini disusun demikian: masalah baris baru dan terminal mana yang mengalaminya, modifier macOS yang diam-diam mematikan satu set shortcut, notifikasi dan kenapa sebagian besar terminal tidak mendapatnya secara default, tiga baris tmux, tema kustom, dan apa yang terjadi pada paste besar yang Anda panggil dari riwayat berminggu-minggu kemudian.
Shift+Enter, dan terminal yang butuh sebuah perintah
Enter mengirim. Dua cara menyisipkan baris baru bekerja di mana saja tanpa setup apa pun, dan lebih baik menguasai salah satunya ketimbang bertarung dengan yang ketiga — tetapi yang ketiga itulah yang selalu diraih semua orang, jadi inilah posisinya.
# Enter submits. For a line break WITHOUT submitting:
# Ctrl+J works in every terminal, no setup
# \ then Enter same
# Shift+Enter depends on the terminal
/terminal-setup # writes the Shift+Enter binding into the
# terminal's own config file
# Run it in the HOST terminal, not inside tmux or screen — it
# needs to write to the host terminal's configuration.
#
# In VS Code, Cursor and Devin Desktop it also sets
# terminal.integrated.gpuAcceleration to "off", which prevents
# garbled text in the integrated terminal, and adjusts the
# mouse wheel sensitivity for fullscreen mode.
#
# To swap the behaviour entirely — Enter inserts a newline and
# Shift+Enter submits — map chat:newline and chat:submit in
# your keybindings file instead.
Dukungan Shift+Enter per terminal:
Terminal
Shift+Enter untuk baris baru
Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows Terminal
Bekerja tanpa setup
VS Code, Cursor, Devin Desktop, Alacritty, Zed
Jalankan perintah terminal-setup sekali
gnome-terminal, IDE JetBrains seperti PyCharm
Tidak tersedia — pakai Ctrl+J atau backslash lalu Enter
Modifier macOS yang mematikan satu keluarga shortcut
Beberapa shortcut Claude Code memakai tombol Option — baris baru, model picker, toggle fast mode. Di macOS sebagian besar terminal tidak mengirim Option sebagai modifier secara default, jadi semuanya diam tanpa suara. Settingnya biasanya berlabel gunakan Option sebagai tombol Meta, dengan meta sebagai nama historis Unix untuk tombol yang kini berlabel Option atau Alt.
Apple Terminal menaruhnya di setelan keyboard, iTerm2 menginginkan kedua tombol Option disetel ke mode escape-plus, dan VS Code punya setting editornya sendiri. Kalau Anda menerima prompt setup terminal saat pertama menjalankan Claude Code di Apple Terminal, ini sudah beres — prompt itu menjalankan perintah setup untuk Anda.
Setup pertama di Apple Terminal itu juga mematikan bel audio, yang biasanya memang yang Anda inginkan dan justru keliru kalau Anda memakai screen reader. Claude Code kini membiarkan belnya di screen reader mode, tetapi run dari sebelum v2.1.211 mematikannya tanpa pandang bulu. Kalau bel Anda mendadak senyap dan Anda tidak pernah memilihnya, letaknya di setelan profil lanjutan terminal, bukan di sesuatu yang bisa dikembalikan Claude Code.
Kenapa Anda tidak mendapat notifikasi saat Claude selesai
Ketika Claude selesai atau berhenti untuk sebuah permission prompt dan Anda tampak sedang pergi, ia memicu event notifikasi. Apa yang terjadi pada event itu sepenuhnya bergantung pada terminal Anda:
Secara default Claude Code mengirim notifikasi desktop hanya di Ghostty, Kitty, dan iTerm2 — dan iTerm2 butuh alert diaktifkan serta alert dari escape sequence diizinkan di setelannya sendiri sebelum notifikasinya muncul.
Di terminal lain mana pun, setel setting kanal notifikasi ke bel terminal dan Anda mendapat peringatan audio sebagai gantinya.
Untuk apa pun selain itu — suara tertentu, notifikasi desktop di Linux, pesan ke suatu tempat — konfigurasikan sebuah notification hook. Hook berjalan berdampingan dengan notifikasi bawaan, bukan menggantikannya.
Tiga baris tmux
Dua hal rusak di bawah tmux secara default, dan keduanya diperbaiki blok pendek yang sama. Layak ditambahkan bahkan kalau Anda hanya sesekali memakai tmux, karena mode gagalnya terlihat seperti bug Claude Code alih-alih konfigurasi multiplexer.
# ~/.tmux.conf — two things break by default under tmux:
# Shift+Enter submits instead of inserting a newline, and
# desktop notifications never reach the outer terminal.
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
# Then apply to the running server without restarting it:
# tmux source-file ~/.tmux.conf
# allow-passthrough lets notifications and progress updates
# through instead of being swallowed by tmux.
# The extended-keys lines let tmux tell Shift+Enter apart from
# plain Enter, which is the whole reason the newline shortcut
# does not work under tmux otherwise.
Tema kustom hanyalah sebuah file JSON
Di luar preset bawaan, file JSON apa pun di folder tema menjadi sebuah tema. Isinya sebuah preset dasar dan peta override token warna, dan token yang tidak Anda sebut jatuh kembali ke preset dasarnya. Editor interaktif pada perintah tema menampilkan token yang sama dengan pratinjau langsung, dan itu cara lebih cepat menemukan yang Anda cari ketimbang membaca referensinya.
// ~/.claude/themes/midnight.json
// The filename without .json is the slug; selecting it stores
// custom:<slug> as your theme preference.
{
"name": "Midnight",
"base": "dark",
"overrides": {
"claude": "#a78bfa",
"planMode": "#38bdf8",
"diffAdded": "#14532d",
"diffRemoved": "#7f1d1d",
"userMessageBackground": "#1e1b4b"
}
}
// base: dark | light | dark-daltonized | light-daltonized
// dark-ansi | light-ansi
// Colours: #rrggbb, #rgb, rgb(r,g,b), ansi256(n), or
// ansi:<name> for the 16 standard names.
//
// Unknown tokens and invalid values are IGNORED, so a typo
// cannot break rendering. Claude Code watches the folder and
// reloads on change — but restart once if the folder did not
// exist when the session started.
Dua dari presetnya ramah buta warna — satu daltonized gelap dan satu daltonized terang — dan keduanya tersedia sebagai dasar bagi tema Anda sendiri, bukan cuma sebagai preset jadi. Ada juga delapan warna subagent bernama yang bisa Anda timpa, dan begitulah cara membuat agent paralel bisa dibedakan pada palet yang jika tidak akan menyatukan mereka.
Paste besar dan cache di baliknya
Tempel lebih dari 800 karakter atau lebih dari dua baris dan Claude Code melipat inputnya menjadi placeholder supaya kotaknya tetap bisa dipakai. Isi lengkapnya tetap dikirim ketika Anda submit, dan disimpan di paste cache sehingga memanggil ulang prompt itu dari riwayat — bahkan di sesi berikutnya — mengirim isi lengkapnya lagi alih-alih teks placeholder-nya.
Cache itu disapu pada jadwal retensi yang sama seperti isi direktori konfigurasi lainnya, jadi prompt yang dipanggil ulang bisa merujuk teks tempelan yang sudah tidak ada. Claude Code tidak pernah mengirim string placeholder secara harfiah: pada prompt biasa yang masih punya teks lain, ia membuang placeholder-nya dan mengirim sisanya, dan pada perintah shell mode atau slash command, di mana membuangnya akan mengubah apa yang dijalankan, ia membatalkan pengiriman dan meninggalkan teks Anda di input untuk diperbaiki.
Terminal bawaan VS Code bisa menjatuhkan karakter dari paste yang sangat besar bahkan sebelum sampai ke Claude Code, dan itu menghasilkan prompt terpotong yang terlihat seperti masalah Claude Code padahal bukan. Untuk file utuh atau log panjang, tulis isinya ke sebuah file lalu minta Claude membacanya — itu menjaga transkrip tetap terbaca dan membiarkan Claude merujuk path-nya di giliran berikutnya alih-alih membaca ulang dinding teks tempelan.
Dua detail Windows-dan-vim yang layak diketahui
Ini cukup sering muncul sehingga layak dinyatakan terus terang:
Kalau setiap Backspace menghapus satu kata utuh di Windows, terminal Anda mengirim kode kontrol yang dibaca Claude Code sebagai tombol hapus kata. Ada environment variable yang mengganti penafsirannya, dan ia bekerja dua arah kalau terminal Anda punya masalah sebaliknya.
Vim mode adalah sebuah setting config, dan Enter tetap mengirim di insert mode, tidak seperti vim sungguhan — pakai perintah buka-baris di normal mode, atau tombol baris baru universal.
Motion vim tidak bisa dipetakan ulang lewat file keybinding. Urutan dua tombol di insert mode yang dipetakan ke escape punya settingnya sendiri, dan itulah yang sebenarnya diinginkan orang.
Tidak satu pun dari ini wajib dan semuanya berupa pencarian, dan justru itulah alasan membacanya sekali lebih baik daripada membacanya saat Anda sedang jengkel. Dua perubahan yang akan saya lakukan di mesin baru mana pun adalah perintah terminal-setup, karena ia memperbaiki beberapa hal sekaligus, dan kanal notifikasi, karena bekerja bersama agent jauh lebih enak ketika Anda bisa pergi lalu dipanggil kembali. Selebihnya bisa menunggu sampai benar-benar mengganggu.