/keybindings untuk membuat atau membuka file konfigurasi Anda di ~/.claude/keybindings.json.
File konfigurasi
File konfigurasi pintasan keyboard adalah objek dengan arraybindings. 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 formatnamespace: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 konteksGlobal:
Tindakan riwayat
Tindakan untuk menavigasi riwayat perintah:Tindakan chat
Tindakan yang tersedia dalam konteksChat:
*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 konteksAutocomplete:
Tindakan konfirmasi
Tindakan yang tersedia dalam konteksConfirmation:
*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:
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 konteksConfirmation untuk dialog izin:
Tindakan transcript
Tindakan yang tersedia dalam konteksTranscript:
transcript:toggleShowAll berlaku dalam renderer klasik saja; dalam rendering fullscreen, penampil transcript tidak menawarkan toggle tampilkan-semua.
Tindakan pencarian riwayat
Tindakan yang tersedia dalam konteksHistorySearch:
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 konteksTask:
Tindakan tema
Tindakan yang tersedia dalam konteksThemePicker:
Tindakan bantuan
Tindakan yang tersedia dalam konteksHelp:
Tindakan tab
Tindakan yang tersedia dalam konteksTabs:
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 konteksAttachments:
Tindakan footer
Tindakan yang tersedia dalam konteksFooter:
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. BindingSelect 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:
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 konteksDiffDialog:
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 konteksModelPicker:
Tindakan slider upaya
Tindakan yang tersedia dalam konteksEffortSlider, slider yang terbuka saat Anda menjalankan /effort tanpa argumen. Kunci Enter dan Escape slider tidak dapat diikat ulang.
Tindakan pilih
Tindakan yang tersedia dalam konteksSelect:
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 konteksPlugin:
Tindakan pengaturan
Tindakan yang tersedia dalam konteksSettings. 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 konteksAgents, 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 konteksChat saat dikte suara diaktifkan:
Tindakan scroll
Tindakan yang tersedia dalam konteksScroll saat rendering fullscreen diaktifkan:
Sintaks keystroke
Pengubah
Gunakan tombol pengubah dengan pemisah+:
ctrlataucontrol- Tombol Controlshift- Tombol Shiftalt,opt,option, ataumeta- Tombol Alt pada Windows dan Linux, tombol Option pada macOScmd,command,super, atauwin- Tombol Command pada macOS, tombol Windows pada Windows, tombol Super pada Linux
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, jadiK 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
Chord
Chord adalah urutan keystroke yang dipisahkan oleh spasi:Tombol khusus
escapeatauesc- Tombol Escapeenterataureturn- Tombol Entertab- Tombol Tabspace- Bilah spasiup,down,left,right- Tombol panahpageup,pagedown- Tombol Page Up dan Page Downhome,end- Tombol Home dan Endbackspace,delete- Tombol hapuswheelup,wheeldown- Peristiwa scroll roda mouse
Batalkan pintasan default
Atur tindakan kenull untuk membatalkan ikatan pintasan default:
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:
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 jawabanOther 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
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
jjke Escape, gunakan pengaturanvimInsertModeRemaps - 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
--debug untuk melihat detailnya.