Konfigurasi terminal Anda untuk Claude Code
Perbaiki Shift+Enter untuk baris baru, dapatkan bel terminal saat Claude selesai, konfigurasi tmux, cocokkan tema warna, dan aktifkan mode Vim di CLI Claude Code.
Claude Code bekerja di terminal apa pun tanpa konfigurasi. Halaman ini untuk ketika sesuatu yang spesifik tidak berperilaku seperti yang Anda harapkan. Temukan gejala Anda di bawah. Jika semuanya sudah terasa benar, Anda tidak memerlukan halaman ini.
- Shift+Enter mengirimkan alih-alih menyisipkan baris baru
- Pintasan tombol Option tidak melakukan apa pun di macOS
- Tidak ada suara atau peringatan saat Claude selesai
- Anda menjalankan Claude Code di dalam tmux
- Backspace menghapus seluruh kata di Windows
- Tampilan berkedip atau scrollback melompat
- Anda ingin kunci Vim dalam prompt
Halaman ini tentang membuat terminal Anda mengirimkan sinyal yang tepat ke Claude Code. Untuk mengubah kunci mana yang Claude Code sendiri merespons, lihat pintasan keyboard sebagai gantinya.
Masukkan prompt multiline
Menekan Enter mengirimkan pesan Anda. Untuk menambahkan jeda baris tanpa mengirimkan, tekan Ctrl+J, atau ketik \ lalu tekan Enter. Keduanya berfungsi di setiap terminal tanpa setup.
Di sebagian besar terminal Anda juga dapat menekan Shift+Enter, tetapi dukungan bervariasi menurut emulator terminal:
| Terminal | Shift+Enter untuk newline |
|---|---|
| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows Terminal | Berfungsi tanpa setup |
| Terminal lain yang mendukung protokol keyboard kitty, seperti foot dan Alacritty 0.16 atau lebih baru | Berfungsi tanpa setup. Memerlukan Claude Code v2.1.269 atau lebih baru |
| VS Code, Cursor, Devin Desktop, Alacritty sebelum 0.16, Zed | Jalankan /terminal-setup sekali |
| gnome-terminal, JetBrains IDEs seperti PyCharm dan Android Studio | Tidak tersedia; gunakan Ctrl+J atau \ lalu Enter |
Untuk VS Code, Cursor, Devin Desktop, Alacritty sebelum 0.16, dan Zed, /terminal-setup menulis pintasan keyboard Shift+Enter ke dalam file konfigurasi terminal. Pada run pertama Anda melihat konfirmasi seperti Installed VSCode terminal Shift+Enter key binding. Binding yang ada dibiarkan tetap ada; jika Anda melihat pesan seperti VSCode terminal Shift+Enter key binding already configured, tidak ada perubahan yang dilakukan. Jalankan /terminal-setup langsung di terminal host daripada di dalam tmux atau screen, karena perlu menulis ke konfigurasi terminal host.
Di VS Code, Cursor, dan Devin Desktop, /terminal-setup juga memperbarui dua pengaturan editor: mengatur terminal.integrated.gpuAcceleration ke "off" untuk mencegah teks yang rusak di terminal terintegrasi, dan mengatur terminal.integrated.mouseWheelScrollSensitivity untuk scrolling yang lebih halus di fullscreen mode. Untuk membatalkan perubahan akselerasi GPU, atur kembali ke "auto" dan muat ulang jendela editor.
Di Zed, /terminal-setup memperbarui keymap.json Anda di tempat:
- Jika keymap sudah memiliki binding dan tidak ada satupun yang merupakan Terminal
shift-enter, Claude Code terlebih dahulu membuat backup ke salinan di direktori yang sama, sepertikeymap.json.1a2b3c4d.bak, kemudian menggabungkan binding Shift+Enter ke dalam keymap Anda, menjaga pintasan keyboard dan komentar lainnya - Jika Claude Code tidak dapat membaca atau mengurai keymap, tidak dapat membuat backup, atau tidak dapat memverifikasi hasil yang digabungkan, file dibiarkan tidak berubah dan blok keybinding dicetak untuk ditambahkan sendiri
Jika Anda menjalankan di dalam tmux, Shift+Enter juga memerlukan konfigurasi tmux di bawah bahkan ketika terminal luar mendukungnya.
Untuk mengikat newline ke tombol yang berbeda, atau untuk menukar perilaku sehingga Enter menyisipkan newline dan Shift+Enter mengirimkan, petakan tindakan chat:newline dan chat:submit di file keybindings Anda.
Aktifkan pintasan keyboard Option di macOS
Beberapa pintasan keyboard Claude Code menggunakan tombol Option, seperti Option+Enter untuk baris baru atau Option+P untuk beralih model. Di macOS, sebagian besar terminal tidak mengirimkan Option sebagai pengubah secara default, sehingga pintasan ini tidak berfungsi sampai Anda mengaktifkannya. Pengaturan terminal untuk ini biasanya berlabel "Use Option as Meta Key"; Meta adalah nama Unix historis untuk tombol yang sekarang berlabel Option atau Alt.
Buka Settings → Profiles → Keyboard dan centang "Use Option as Meta Key".
Jika Anda menerima prompt pengaturan terminal first-run Claude Code, ini sudah selesai. Prompt tersebut menjalankan /terminal-setup untuk Anda, yang mengaktifkan Option sebagai Meta dan mematikan bel audibel di profil Apple Terminal Anda.
Dalam mode pembaca layar, /terminal-setup membiarkan pengaturan bel tidak berubah sehingga bel terminal tetap audibel. Sebelum v2.1.211, /terminal-setup mematikan bel bahkan dalam mode pembaca layar. Jika penjalankan sebelumnya mematikan bel, aktifkan kembali di Settings → Profiles → Advanced → "Audible bell".
Buka Settings → Profiles → Keys → General dan atur Left Option key dan Right Option key ke "Esc+".
Menjalankan /terminal-setup di iTerm2 mengaktifkan "Applications in terminal may access clipboard" di Settings → General → Selection sehingga perintah /copy dapat menulis ke clipboard sistem Anda. Perintah mendeteksi iTerm2 bahkan ketika dijalankan dari dalam tmux. Mulai ulang iTerm2 agar perubahan berlaku.
Tambahkan "terminal.integrated.macOptionIsMeta": true ke pengaturan VS Code Anda.
Untuk Ghostty, Kitty, dan terminal lainnya, cari pengaturan Option-as-Alt atau Option-as-Meta dalam file konfigurasi terminal.
Dapatkan bel terminal atau notifikasi
Ketika Claude menyelesaikan tugas atau berhenti untuk permintaan izin, dan Anda tampaknya jauh dari terminal, Claude Code mengirimkan acara notifikasi. Lihat kapan setiap jenis notifikasi dikirim untuk waktu yang tepat. Menampilkan ini sebagai bel terminal atau notifikasi desktop memungkinkan Anda beralih ke pekerjaan lain saat tugas yang panjang berjalan.
Secara default Claude Code mengirimkan notifikasi desktop hanya di Ghostty, Kitty, dan iTerm2. Di terminal lain, atur preferredNotifChannel ke "terminal_bell" untuk membunyikan bel terminal sebagai gantinya, atau konfigurasikan hook Notification untuk suara atau perintah khusus. Entri pengaturan berikut mengaktifkan bel terminal:
{
"preferredNotifChannel": "terminal_bell"
}
Notifikasi desktop mencapai mesin lokal Anda melalui SSH, sehingga sesi jarak jauh masih dapat memperingatkan Anda. Ghostty dan Kitty meneruskannya ke pusat notifikasi OS Anda tanpa pengaturan lebih lanjut. iTerm2 memerlukan Anda untuk mengaktifkan penerusan:
Buka pengaturan notifikasi iTerm2
Buka Settings → Profiles → Terminal.
Aktifkan peringatan
Centang "Notification Center Alerts", kemudian klik "Filter Alerts" dan aktifkan "Send escape sequence-generated alerts".
Jika notifikasi masih tidak muncul, konfirmasikan bahwa aplikasi terminal Anda memiliki izin notifikasi di pengaturan OS Anda, dan jika Anda menjalankan di dalam tmux, aktifkan passthrough.
Mainkan suara dengan hook Notification
Di terminal apa pun Anda dapat mengonfigurasi hook Notification untuk memutar suara atau menjalankan perintah khusus ketika Claude membutuhkan perhatian Anda. Hook berjalan bersama notifikasi bawaan daripada menggantinya, sehingga terminal yang tidak menerima notifikasi desktop, seperti Warp atau terminal terintegrasi VS Code, dapat menggunakan hook atau mengatur preferredNotifChannel ke "terminal_bell" sebagai gantinya.
Contoh di bawah memutar suara sistem di macOS. Panduan tertaut memiliki perintah notifikasi desktop untuk macOS, Linux, dan Windows.
{
"hooks": {
"Notification": [
{
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
}
]
}
}
Konfigurasi tmux
Ketika Claude Code berjalan di dalam tmux, secara default Shift+Enter mengirimkan alih-alih menyisipkan baris baru, dan notifikasi desktop serta progress bar tidak pernah mencapai terminal luar. Tambahkan baris-baris ini ke ~/.tmux.conf, kemudian jalankan tmux source-file ~/.tmux.conf untuk menerapkannya ke server yang sedang berjalan:
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
Baris allow-passthrough memungkinkan notifikasi dan pembaruan progress mencapai terminal luar alih-alih ditelan oleh tmux. Baris extended-keys memungkinkan tmux membedakan Shift+Enter dari Enter biasa sehingga pintasan baris baru berfungsi.
Perbaiki Backspace menghapus seluruh kata di Windows
Di Windows, Claude Code membaca Backspace yang tiba sebagai ^H sebagai Ctrl+Backspace, yang menghapus kata sebelumnya, kecuali ketika TERM_PROGRAM adalah mintty atau TERM adalah cygwin. Di macOS dan Linux, Claude Code membacanya sebagai Backspace biasa.
Jika setiap kali menekan Backspace menghapus seluruh kata, terminal Anda mengirimkan ^H untuk Backspace biasa. Atur CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0. Backspace dan Ctrl+H kemudian menghapus satu karakter masing-masing. Jika Ctrl+Backspace hanya menghapus satu karakter di macOS atau Linux karena terminal Anda mengirimkan ^H untuknya, atur variabel ke 1 sebagai gantinya.
Sesuaikan tema warna
Gunakan perintah /theme, atau pemilih tema di /config, untuk memilih tema Claude Code yang sesuai dengan terminal Anda. Memilih opsi auto mendeteksi latar belakang terminal Anda yang terang atau gelap, sehingga tema mengikuti perubahan tampilan OS kapan pun terminal Anda berubah. Claude Code tidak mengontrol skema warna terminal itu sendiri, yang diatur oleh aplikasi terminal.
Untuk menyesuaikan apa yang muncul di bagian bawah antarmuka, konfigurasikan baris status khusus yang menampilkan model saat ini, direktori kerja, cabang git, atau konteks lainnya.
Buat tema khusus
Selain preset bawaan, /theme mencantumkan tema khusus apa pun yang telah Anda tentukan dan tema apa pun yang disumbangkan oleh plugin yang terinstal. Pilih New custom theme… di akhir daftar untuk membuat satu secara interaktif: Anda memberi nama tema, kemudian pilih token warna individual untuk ditimpa. Tekan Ctrl+E saat tema khusus disorot untuk mengeditnya.
Setiap tema khusus adalah file JSON di ~/.claude/themes/. Nama file tanpa ekstensi .json adalah slug tema, dan memilih tema menyimpan custom:<slug> sebagai preferensi tema Anda. File memiliki tiga bidang opsional:
| Field | Type | Description |
|---|---|---|
name |
string | Label tampilan yang ditampilkan di /theme. Default ke slug nama file |
base |
string | Preset bawaan yang dimulai dari tema: dark, light, dark-daltonized, light-daltonized, dark-ansi, atau light-ansi. Default ke dark |
overrides |
object | Peta nama token warna ke nilai warna. Token yang tidak tercantum di sini jatuh kembali ke preset dasar |
Nilai warna menerima #rrggbb, #rgb, rgb(r,g,b), ansi256(n), atau ansi:<name> di mana <name> adalah salah satu dari 16 nama warna ANSI standar seperti red atau cyanBright. Token yang tidak dikenal dan nilai warna yang tidak valid diabaikan, jadi kesalahan ketik tidak dapat merusak rendering.
Contoh berikut mendefinisikan tema yang mempertahankan preset gelap tetapi mengubah warna aksen prompt, teks kesalahan, dan teks kesuksesan:
{
"name": "Dracula",
"base": "dark",
"overrides": {
"claude": "#bd93f9",
"error": "#ff5555",
"success": "#50fa7b"
}
}
Claude Code memantau ~/.claude/themes/ dan memuat ulang ketika file ditambahkan atau diubah, sehingga edit yang dibuat di editor Anda berlaku untuk sesi yang sedang berjalan tanpa restart. Jika folder ~/.claude/themes/ itu sendiri tidak ada ketika Claude Code dimulai, restart sekali setelah membuat file tema pertama Anda. Setelah itu, perubahan berlaku tanpa restart.
Referensi di bawah mencakup token yang dapat Anda atur di overrides. Editor interaktif di /theme menampilkan token yang sama dengan pratinjau langsung, ditambah beberapa aksen tujuan tunggal seperti warna layar onboarding yang dihilangkan di sini.
Color token reference
Contoh berikut menggabungkan token dari beberapa grup di bawah: aksen merek, batas mode rencana, latar belakang diff, dan latar belakang pesan.
{
"name": "Midnight",
"base": "dark",
"overrides": {
"claude": "#a78bfa",
"planMode": "#38bdf8",
"diffAdded": "#14532d",
"diffRemoved": "#7f1d1d",
"userMessageBackground": "#1e1b4b"
}
}
Warna teks dan aksen
Kontrol aksen merek utama dan nuansa teks latar depan yang digunakan di seluruh antarmuka.
| Token | Controls |
|---|---|
claude |
Aksen merek utama, digunakan untuk spinner dan label asisten |
text |
Teks latar depan default |
inverseText |
Teks yang digambar di atas latar belakang berwarna, seperti lencana status |
inactive |
Teks sekunder seperti petunjuk, stempel waktu, dan item yang dinonaktifkan |
subtle |
Batas samar dan teks sekunder yang dikurangi penekanannya |
suggestion |
Saran pelengkapan otomatis dan sorotan pilihan di pemilih |
permission |
Batas dialog, termasuk prompt izin dan pemilih |
remember |
Indikator memori dan CLAUDE.md |
Status colors
Sinyal keberhasilan, kegagalan, dan status peringatan di seluruh pesan dan indikator.
| Token | Controls |
|---|---|
success |
Pesan kesuksesan dan pemeriksaan yang lulus |
error |
Pesan kesalahan dan kegagalan |
warning |
Peringatan, pesan hati-hati, dan indikator mode otomatis |
merged |
Status permintaan tarik yang digabungkan |
Input box and mode indicators
Atur warna batas kotak input dan aksen yang ditampilkan saat mode izin atau indikator aktif.
| Token | Controls |
|---|---|
promptBorder |
Batas kotak input |
planMode |
Aksen Plan mode, pesan plan, dan dialog plan-mode |
autoAccept |
Aksen mode Accept-edits |
bashBorder |
Batas kotak input saat memasukkan perintah shell ! |
ide |
Indikator koneksi IDE |
fastMode |
Indikator mode cepat |
effortUltra |
Tag ultracode pada batas kotak input saat ultracode aktif. Penggantian warna Anda berlaku pada Claude Code v2.1.239 atau lebih baru |
Diff rendering
Warna kode yang ditambahkan dan dihapus dalam edit dan ulasan file.
| Token | Controls |
|---|---|
diffAdded |
Latar belakang baris yang ditambahkan |
diffRemoved |
Latar belakang baris yang dihapus |
diffAddedDimmed |
Latar belakang baris yang ditambahkan dalam diff yang digelapkan ditampilkan setelah Anda menolak edit |
diffRemovedDimmed |
Latar belakang baris yang dihapus dalam diff yang digelapkan ditampilkan setelah Anda menolak edit |
diffAddedWord |
Sorotan tingkat kata dalam baris yang ditambahkan |
diffRemovedWord |
Sorotan tingkat kata dalam baris yang dihapus |
Fullscreen mode
Claude Code melukis userMessageBackground, bashMessageBackgroundColor, dan memoryBackgroundColor di kedua renderer default dan fullscreen. Ini menggunakan userMessageBackgroundHover dan selectionBg hanya dalam mode rendering fullscreen.
| Token | Controls |
|---|---|
userMessageBackground |
Latar belakang di balik pesan Anda dalam transkrip |
userMessageBackgroundHover |
Latar belakang di balik pesan saat melayang atau diperluas |
bashMessageBackgroundColor |
Latar belakang di balik entri perintah shell ! dalam transkrip |
memoryBackgroundColor |
Latar belakang di balik entri memori # dalam transkrip |
selectionBg |
Latar belakang teks yang dipilih dengan mouse |
Usage meter and speaker labels
Sesuaikan bilah yang ditampilkan dalam tampilan /usage dan label yang membedakan pesan Anda dari Claude.
| Token | Controls |
|---|---|
rate_limit_fill |
Bagian yang diisi dari meter penggunaan |
rate_limit_empty |
Bagian yang tidak diisi dari meter penggunaan |
briefLabelYou |
Warna label You pada pesan Anda |
briefLabelClaude |
Warna label Claude pada pesan asisten |
Shimmer variants and subagent colors
Beberapa token memiliki varian shimmer berpasangan yang menyediakan warna lebih terang yang digunakan dalam gradien animasi spinner. Ganti shimmer bersama token dasarnya jika animasi terlihat tidak cocok.
claudedanclaudeShimmerwarningdanwarningShimmerpermissiondanpermissionShimmerpromptBorderdanpromptBorderShimmerinactivedaninactiveShimmerfastModedanfastModeShimmer
Setiap subagent dan tugas paralel ditampilkan dalam salah satu dari delapan warna bernama sehingga Anda dapat membedakannya dalam transkrip. Nama token mengikuti pola <color>_FOR_SUBAGENTS_ONLY, di mana <color> adalah red, blue, green, yellow, purple, orange, pink, atau cyan. Ganti ini untuk mengubah tampilan setiap warna bernama. Misalnya, subagent dengan color: blue dalam definisinya digambar menggunakan nilai blue_FOR_SUBAGENTS_ONLY.
Claude Code merender kata kunci ultrathink dalam input prompt dengan gradien pelangi tujuh warna. Nama token mengikuti pola rainbow_<color> dan rainbow_<color>_shimmer, di mana <color> adalah red, orange, yellow, green, blue, indigo, atau violet.
Beralih ke rendering fullscreen
Dalam mode pembaca layar, bagian ini tidak berlaku. Claude Code selalu dirender sebagai teks gulir biasa kecuali dalam sesi latar belakang yang terlampir, dan jika Anda menjalankan /tui fullscreen di sesi lain, Claude Code mencetak penjelasan alih-alih beralih.
Jika tampilan berkedip atau posisi gulir melompat saat Claude sedang bekerja, beralih ke mode rendering fullscreen. Dalam mode ini Anda menggulir dengan mouse atau PageUp di dalam Claude Code daripada dengan scrollback asli terminal Anda; lihat halaman fullscreen untuk cara mencari dan menyalin.
Jika kedipan adalah satu-satunya masalah dan terminal Anda mendukung keluaran tersinkronisasi tetapi tidak terdeteksi otomatis, seperti Emacs eat, atur CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 untuk menghentikan kedipan tanpa mengubah renderer.
Jalankan /tui fullscreen untuk beralih dan simpan preferensi. Percakapan Anda diluncurkan kembali utuh dan sesi mendatang dimulai dalam fullscreen kecuali awal fullscreen gagal. Anda juga dapat mengatur variabel lingkungan CLAUDE_CODE_NO_FLICKER sebelum memulai Claude Code:
CLAUDE_CODE_NO_FLICKER=1 claude
$env:CLAUDE_CODE_NO_FLICKER = "1"; claude
{
"env": {
"CLAUDE_CODE_NO_FLICKER": "1"
}
}
Tempel konten besar
Ketika Anda menempel lebih dari 800 karakter atau lebih dari tiga baris ke dalam prompt, Claude Code menciutkan input ke placeholder seperti [Pasted text #1 +120 lines] sehingga kotak input tetap dapat digunakan. Di jendela terminal yang lebih pendek dari 12 baris, batas baris turun, sehingga Claude Code menciutkan tempel tiga baris pada 11 baris dan tempel multi-baris apa pun pada 10 baris atau lebih sedikit. Claude Code masih mengirimkan konten lengkap ketika Anda mengirimkan.
Ketika Anda menghapus dengan pintasan kata atau baris seperti Ctrl+W atau Ctrl+K, atau dengan penghapusan vim melalui gerakan f/t seperti df], dan rentang yang dihapus mencapai dalam placeholder, Claude Code menghapus placeholder sepenuhnya. Anda dapat menempel penghapusan kembali untuk memulihkannya, dengan Ctrl+Y setelah pintasan kata atau baris, atau dengan p dalam NORMAL mode setelah penghapusan vim.
Claude Code menyimpan konten yang diciutkan di bawah ~/.claude/paste-cache/, sehingga ketika Anda mengingat kembali prompt dari riwayat perintah dan mengirimkannya kembali, Claude Code mengirimkan konten tempel lengkap lagi, termasuk dalam sesi yang lebih baru, sampai penyapuan retensi menghapus file cache.
Claude Code menghapus file cache yang lebih lama dari cleanupPeriodDays, mengikuti aturan penyapuan retensi, sehingga prompt yang diingat kembali dapat mereferensikan teks tempel yang tidak lagi ada. Ketika Anda mengirimkan prompt seperti itu, Claude Code tidak pernah mengirimkan string literal [Pasted text #N], dan menampilkan notifikasi yang menamai tempel yang hilang:
- Dalam prompt biasa dengan teks yang tersisa, Claude Code menghapus placeholder dan mengirimkan teks yang tersisa.
- Dalam perintah shell mode atau perintah
/, di mana penghapusan akan mengubah apa yang berjalan, dan dalam prompt apa pun penghapusan meninggalkan kosong, Claude Code membatalkan pengiriman dan menyimpan teks asli di input, dengan placeholder masih di dalamnya. Hapus placeholder atau edit perintah, kemudian kirim ulang.
Terminal terintegrasi VS Code dapat menjatuhkan karakter dari tempel yang sangat besar sebelum mencapai Claude Code, jadi lebih suka alur kerja berbasis file di sana. Untuk input yang sangat besar seperti seluruh file atau log panjang, tulis konten ke file dan minta Claude membacanya alih-alih menempel. Ini membuat transkrip percakapan tetap dapat dibaca dan memungkinkan Claude mereferensikan file berdasarkan jalur di putaran berikutnya.
Edit prompts with Vim keybindings
Claude Code mencakup mode editing bergaya Vim untuk input prompt. Aktifkan melalui /config → Editor mode, atau dengan mengatur editorMode ke "vim" dalam ~/.claude/settings.json. Atur Editor mode kembali ke normal untuk mematikannya.
Vim mode mendukung subset dari motions dan operators mode NORMAL dan VISUAL, seperti navigasi hjkl, seleksi v/V, dan d/c/y dengan text objects. Lihat referensi mode editor Vim untuk tabel kunci lengkap.
Motions Vim tidak dapat dipetakan ulang melalui file keybindings. Untuk memetakan urutan mode INSERT dua kunci seperti jj ke Escape, atur vimInsertModeRemaps dalam pengaturan pengguna Anda.
Menekan Enter masih mengirimkan prompt Anda dalam mode INSERT, tidak seperti Vim standar. Gunakan o atau O dalam mode NORMAL, atau Ctrl+J, untuk menyisipkan baris baru sebagai gantinya.
Sumber daya terkait
- Mode interaktif: referensi pintasan keyboard lengkap dan tabel kunci Vim
- Keybindings: petakan ulang pintasan Claude Code apa pun, termasuk Enter dan Shift+Enter
- Rendering fullscreen: detail tentang scrolling, pencarian, dan copy dalam mode fullscreen
- Panduan hooks: lebih banyak contoh hook Notification untuk Linux dan Windows
- Troubleshooting: perbaikan untuk masalah di luar konfigurasi terminal