Skip to main content
Claude Code mendukung pintasan keyboard yang dapat disesuaikan. Jalankan /keybindings untuk membuat atau membuka file konfigurasi Anda di ~/.claude/keybindings.json.

File konfigurasi

File konfigurasi pintasan keyboard adalah objek dengan array bindings. Setiap blok menentukan konteks dan peta dari keystroke ke tindakan.
Perubahan pada file pintasan keyboard secara otomatis terdeteksi dan diterapkan tanpa perlu memulai ulang Claude Code.
Contoh ini mengikat Ctrl+E untuk membuka editor eksternal dalam konteks chat, dan membatalkan ikatan Ctrl+U:

Konteks

Setiap blok binding menentukan konteks di mana binding berlaku: Sebelum v2.1.205, konteks Doctor dan tindakan doctor:fix ada untuk layar diagnostik /doctor.

Tindakan yang tersedia

Tindakan mengikuti format namespace:action, seperti chat:submit untuk mengirim pesan atau app:toggleTodos untuk menampilkan daftar tugas. Setiap konteks memiliki tindakan spesifik yang tersedia.

Tindakan aplikasi

Tindakan yang tersedia dalam konteks Global:

Tindakan riwayat

Tindakan untuk menavigasi riwayat perintah:

Tindakan chat

Tindakan yang tersedia dalam konteks Chat: *Di Windows tanpa mode VT (Node <24.2.0/<22.17.0, Bun <1.2.23), default ke Meta+M.

Tindakan autocomplete

Tindakan yang tersedia dalam konteks Autocomplete:

Tindakan konfirmasi

Tindakan yang tersedia dalam konteks Confirmation: *Di Windows tanpa mode VT (Node <24.2.0/<22.17.0, Bun <1.2.23), default ke Meta+M. Sebelum v2.1.257, tindakan confirm:toggleExplanation, terikat ke Ctrl+E secara default, menampilkan penjelasan perintah yang dihasilkan model pada prompt izin Bash dan PowerShell. Dialog menggunakan confirm:yes dan confirm:no untuk menerima dan membatalkan bahkan ketika mereka tidak mengajukan pertanyaan ya-atau-tidak. Jika Anda mengikat huruf telanjang seperti y atau n dalam konteks ini, huruf juga bertindak pada dialog yang tidak pernah menampilkannya sebagai kunci. Dialog yang menampilkan y dan n sebagai kuncinya membaca huruf-huruf itu sendiri dan tidak memerlukan binding. Dalam sebagian besar dialog, menekan Ctrl+C atau Ctrl+D dua kali menutup dialog alih-alih keluar dari Claude Code. Petunjuk setelah penekanan pertama mengatakan apakah penekanan kedua menutup dialog atau keluar. Kedua kunci adalah pintasan yang dicadangkan dan tidak dapat diikat ulang. Contoh ini mengikat y ke confirm:yes dan n ke confirm:no:
Dengan binding ini, y dan n masih mengetik sebagai huruf saat bidang teks memiliki fokus. Sebelum v2.1.280, y juga terikat ke confirm:yes dan n ke confirm:no secara default. Jika Anda membuat keybindings.json Anda dengan /keybindings sebelum v2.1.280, file mencantumkan kedua binding dan mereka tetap berlaku sampai Anda menghapus dua baris itu.

Tindakan izin

Tindakan yang tersedia dalam konteks Confirmation untuk dialog izin:

Tindakan transcript

Tindakan yang tersedia dalam konteks Transcript: transcript:toggleShowAll berlaku dalam renderer klasik saja; dalam rendering fullscreen, penampil transcript tidak menawarkan toggle tampilkan-semua.

Tindakan pencarian riwayat

Tindakan yang tersedia dalam konteks HistorySearch: Default historySearch:next, historySearch:accept, historySearch:cancel, dan historySearch:execute berlaku untuk pencarian riwayat inline dalam renderer klasik, yang selalu mencari prompt dari semua proyek. historySearch:cycleScope hanya berlaku dalam rendering fullscreen, di mana Ctrl+R membuka dialog pencarian sebagai gantinya dan Ctrl+S mengubah cakupannya. Kunci lain dialog sudah diperbaiki dan tidak dapat diikat ulang: Enter atau Tab menempatkan kecocokan yang disorot dalam input prompt dan Esc membatalkan.

Tindakan tugas

Tindakan yang tersedia dalam konteks Task:

Tindakan tema

Tindakan yang tersedia dalam konteks ThemePicker:

Tindakan bantuan

Tindakan yang tersedia dalam konteks Help:

Tindakan tab

Tindakan yang tersedia dalam konteks Tabs: Dalam dialog bertab, tabs:next dan tabs:previous mengalihkan tab saat baris tab memiliki fokus. Dalam beberapa dialog, seperti /help dan /sandbox, kunci pengalihan tab juga berfungsi dari dalam konten tab. Up dan Down memindahkan fokus antara baris tab dan konten tab, dan daftar dalam konten merespons kunci hanya saat memiliki fokus.

Tindakan lampiran

Tindakan yang tersedia dalam konteks Attachments: Tindakan yang tersedia dalam konteks Footer: Saat item footer dipilih, seperti baris di panel agen di bawah prompt, Enter membukanya bahkan ketika Anda mengikat ulang Enter dalam konteks Chat ke chat:queueSubmit atau chat:newline. Binding Chat pada kunci yang tidak diikat konteks Footer, seperti Shift+Tab untuk chat:cycleMode, terus bekerja saat item dipilih.

Tindakan pemilih pesan

Dalam daftar pesan dari menu rewind, Anda bergerak melalui pesan dan memilih satu dengan Tindakan Select dan kunci default mereka. Binding Select Anda untuk tindakan tersebut berlaku di sana juga. Konteks MessageSelector tidak memiliki tindakan atau binding default sendiri. Gunakan untuk mengubah kunci untuk daftar ini saja, dengan mengikat tindakan Select seperti select:accept dalam blok MessageSelector. Contoh ini mengikat o untuk memilih pesan yang disorot dalam menu rewind, tanpa mengubah daftar lain apa pun:
Sebelum v2.1.283, daftar ini mengabaikan binding Select dan memiliki tindakan sendiri: messageSelector:up, messageSelector:down, messageSelector:top, messageSelector:bottom, dan messageSelector:select. Jika keybindings.json Anda mengikat salah satu nama tersebut, binding tetap bekerja dalam daftar ini sebagai tindakan Select yang melakukan hal yang sama. Home dan End melompat ke kedua ujung daftar; sebelum v2.1.283, kunci seperti Shift+K dan Shift+J melakukan itu secara default.

Tindakan diff

Tindakan yang tersedia dalam konteks DiffDialog: Daftar file juga merespons Tindakan Select, melalui kunci default mereka dan binding Select Anda. select:previous dan select:next berpindah ke file sebelumnya dan berikutnya, dan Enter membuka diff file yang dipilih melalui select:accept. Untuk mengubah salah satu kunci tersebut untuk daftar file saja, ikat tindakan Select dalam blok DiffDialog. Sebelum v2.1.283, daftar file mengabaikan binding Select, dan Enter membuka diff file yang dipilih melalui tindakan diff:viewDetails terpisah. Jika keybindings.json Anda mengikat diff:viewDetails, binding tetap bekerja dalam daftar file sebagai select:accept. Tampilan detail diff juga mengikat kunci gaya pager ke tindakan scroll standar. Binding ini adalah bagian dari konteks DiffDialog dan hanya berlaku dalam tampilan detail; default konteks Scroll yang tercantum di bawah Tindakan scroll tidak berubah.

Tindakan panel diff

Tindakan untuk panel diff yang /diff buka dalam rendering fullscreen. app:cycleDiffBase berada dalam konteks DiffPanel, yang aktif saat panel terbuka; yang lain adalah Global. Panel memerlukan Claude Code v2.1.260 atau lebih baru.

Tindakan pemilih model

Tindakan yang tersedia dalam konteks ModelPicker:

Tindakan slider upaya

Tindakan yang tersedia dalam konteks EffortSlider, slider yang terbuka saat Anda menjalankan /effort tanpa argumen. Kunci Enter dan Escape slider tidak dapat diikat ulang.

Tindakan pilih

Tindakan yang tersedia dalam konteks Select: Dalam panel daftar seperti /skills dan /mcp, Claude Code menerapkan binding select:pageUp, select:pageDown, select:first, dan select:last Anda. Dalam sebagian besar daftar lainnya, seperti pemilih /model, binding select:first dan select:last Anda berlaku. PageUp dan PageDown halaman melalui opsi dalam daftar itu terlepas dari binding Anda. Sebelum v2.1.280, daftar lain itu mengabaikan Home, End, dan binding select:first dan select:last Anda.

Tindakan plugin

Tindakan yang tersedia dalam konteks Plugin:

Tindakan pengaturan

Tindakan yang tersedia dalam konteks Settings. Tindakan select:accept dan confirm:no digunakan kembali dari konteks Select dan Confirmation dengan perilaku spesifik Settings: perubahan berlaku untuk setiap pengaturan segera setelah Anda mengubahnya, jadi Escape menutup panel dengan perubahan Anda disimpan daripada menolak.

Tindakan agen

Tindakan yang tersedia dalam konteks Agents, yang berlaku dalam tampilan agen, dibuka dengan claude agents. Memerlukan v2.1.257 atau lebih baru. Saat tampilan agen terbuka, Claude Code menggunakan binding Agents untuk kunci apa pun yang diikat konteks Agents, dan mengabaikan binding Chat atau Global pada kunci yang sama. Misalnya, menekan Ctrl+S dalam tampilan agen mengalihkan pengelompokan sesi daripada memicu default chat:stash. Pintasan editor eksternal dispatch input bukan tindakan Agents. Tampilan agen mengikuti binding chat:externalEditor konteks Chat, Ctrl+G secara default. Binding api pada keystroke tunggal dalam tampilan agen, jadi chord Ctrl+X Ctrl+E yang terikat ke chat:externalEditor tidak membuka editor di sana.

Tindakan suara

Tindakan yang tersedia dalam konteks Chat saat dikte suara diaktifkan:

Tindakan scroll

Tindakan yang tersedia dalam konteks Scroll saat rendering fullscreen diaktifkan:

Sintaks keystroke

Pengubah

Gunakan tombol pengubah dengan pemisah +:
  • ctrl atau control - Tombol Control
  • shift - Tombol Shift
  • alt, opt, option, atau meta - Tombol Alt pada Windows dan Linux, tombol Option pada macOS
  • cmd, command, super, atau win - Tombol Command pada macOS, tombol Windows pada Windows, tombol Super pada Linux
Grup cmd hanya terdeteksi di terminal yang melaporkan pengubah Super, seperti yang mendukung protokol keyboard Kitty atau mode modifyOtherKeys xterm. Sebagian besar terminal tidak mengirimnya, jadi gunakan ctrl atau meta untuk binding yang ingin Anda gunakan di mana saja. Sebagai contoh:

Huruf besar

Claude Code mengurai nama kunci tanpa memperhatikan huruf besar/kecil, jadi K adalah binding yang sama dengan k dan ctrl+K sama dengan ctrl+k. Untuk mengikat Shift dan huruf, tulis shift+k.

Tata letak keyboard non-US

Tulis nama kunci dari pintasan Ctrl sebagai karakter Latin bahkan ketika tata letak keyboard aktif Anda mengetik karakter lain. Bagaimana Claude Code mencocokkan kunci yang Anda tekan dengan binding tergantung pada jenis tata letak:
  • Di bawah tata letak non-Latin seperti Cyrillic, Claude Code mencocokkan pintasan Ctrl berdasarkan posisi kunci tata letak US ketika terminal menggunakan protokol keyboard Kitty dan melaporkan posisi tersebut. Di terminal seperti itu, dengan tata letak Rusia aktif, menekan Ctrl dan tombol fisik W memicu ctrl+w. Di terminal yang tidak melaporkan posisi, Claude Code mencocokkan apa pun yang dikirim terminal untuk penekanan kunci: kode kontrol ASCII memicu pintasan Latin, dan penekanan kunci yang tiba sebagai karakter Cyrillic tidak cocok dengan binding apa pun
  • Di bawah tata letak yang mengatur ulang huruf Latin, seperti AZERTY, Claude Code mencocokkan huruf yang diketik kunci, jadi menekan Ctrl dan kunci berlabel A memicu ctrl+a
Sebelum v2.1.247, menekan pintasan Ctrl di bawah tata letak non-Latin tidak memicu binding-nya di terminal yang menggunakan protokol keyboard Kitty, seperti Ghostty, Kitty, WezTerm, dan iTerm2.

Chord

Chord adalah urutan keystroke yang dipisahkan oleh spasi:
Tekan setiap keystroke dalam 3 detik setelah yang sebelumnya. Jika Anda menunggu lebih lama, Claude Code membatalkan chord dan menampilkan pemberitahuan singkat yang mengatakan demikian.

Tombol khusus

  • escape atau esc - Tombol Escape
  • enter atau return - Tombol Enter
  • tab - Tombol Tab
  • space - Bilah spasi
  • up, down, left, right - Tombol panah
  • pageup, pagedown - Tombol Page Up dan Page Down
  • home, end - Tombol Home dan End
  • backspace, delete - Tombol hapus
  • wheelup, wheeldown - Peristiwa scroll roda mouse

Batalkan pintasan default

Atur tindakan ke null untuk membatalkan ikatan pintasan default:
Ini juga berfungsi untuk binding chord. Membatalkan setiap chord yang berbagi awalan membebaskan awalan itu untuk digunakan sebagai binding tombol tunggal. Sebuah chord dalam konteks aktif apa pun menjaga awalannya tetap terlindungi, jadi Anda harus membatalkan setiap chord dalam konteks yang mendefinisikannya. Claude Code mengikat chord default ini pada awalan ctrl+x: ctrl+x ctrl+k, ctrl+x ctrl+e, ctrl+x enter, ctrl+x ctrl+a, ctrl+x ctrl+s, dan ctrl+x tab di Chat, ctrl+x ctrl+b di Task, dan ctrl+x b di DiffPanel. Chord ctrl+x enter memerlukan v2.1.247 atau lebih baru, ctrl+x b, ctrl+x ctrl+a, dan ctrl+x tab memerlukan v2.1.260 atau lebih baru, dan ctrl+x ctrl+s memerlukan v2.1.275 atau lebih baru. Untuk mengklaim kembali ctrl+x itu sendiri sebagai binding tombol tunggal, batalkan semuanya:
Jika Anda membatalkan beberapa tetapi tidak semua chord pada awalan, menekan awalan masih memasuki mode chord-wait untuk binding yang tersisa.

Pintasan yang dicadangkan

Pintasan ini tidak dapat diikat ulang:

Konflik terminal

Beberapa pintasan mungkin bertentangan dengan multiplexer terminal:

Bidang teks

Jika Anda mengikat huruf, digit, atau Spasi yang telah ditentukan, Anda masih dapat mengetik karakter tersebut di bidang teks dalam dialog atau panel. Salah satu bidang tersebut adalah jawaban Other untuk pertanyaan yang diajukan Claude. Saat bidang memiliki fokus, tombol yang dapat dicetak yang Anda tekan tanpa Ctrl, Alt, atau Cmd akan masuk ke bidang, dan Claude Code tidak akan mencocokkannya dengan pintasan keyboard Anda. Kunci-kunci ini masih menjalankan pintasan keyboard mereka saat bidang memiliki fokus:
  • Kunci yang tidak mengetik karakter, seperti Enter, Escape, Tab, dan tombol panah
  • Tombol apa pun yang ditekan dengan Ctrl, Alt, atau Cmd
  • Keystroke kedua dari chord yang sudah sedang berlangsung
Pada prompt utama, Claude Code mencocokkan setiap kunci terhadap konteks aktif, seperti Chat, dan mengetik kunci hanya ketika tidak ada pintasan keyboard yang mengambilnya.

Interaksi mode vim

Ketika mode vim diaktifkan melalui /config → Editor mode, keybindings dan mode vim beroperasi secara independen:
  • Mode vim menangani input pada tingkat input teks (gerakan kursor, mode, motions)
  • Keybindings menangani tindakan pada tingkat komponen (alihkan todos, kirim, dll.)
  • Tombol Escape dalam mode vim beralih dari INSERT ke mode NORMAL; itu tidak memicu chat:cancel
  • Sebagian besar pintasan Ctrl+key melewati mode vim ke sistem keybinding
  • Kunci vim tidak dapat dipetakan ulang melalui file keybindings. Untuk memetakan urutan mode INSERT dua kunci seperti jj ke Escape, gunakan pengaturan vimInsertModeRemaps
  • Dalam mode NORMAL vim, ? menampilkan menu bantuan (perilaku vim)
  • Dalam mode NORMAL vim, / membuka pencarian riwayat, sama seperti Ctrl+R dalam mode standar

Validasi

Claude Code memvalidasi pintasan keyboard Anda dan menampilkan peringatan untuk:
  • Parse errors (JSON atau struktur tidak valid)
  • Nama konteks tidak valid
  • Nilai action tidak valid, seperti action yang bukan string atau null
  • Nama action yang tidak dikenal, seperti typo dari action yang terdaftar. Claude Code melewati binding dan mempertahankan binding default apa pun untuk kunci tersebut. Sebelum v2.1.246, binding dengan nama action yang tidak dikenal secara diam-diam menonaktifkan kunci tersebut
  • Konflik pintasan yang dicadangkan
  • Binding duplikat dalam konteks yang sama
Claude Code melaporkan peringatan ketika file dimuat dan menulis masing-masing ke log debug. Mulai Claude Code dengan --debug untuk melihat detailnya.