رفتن به محتوا

سفارشی‌سازیِ میان‌برهای صفحه‌کلید

Claude Code از میان‌برهای صفحه‌کلیدِ قابلِ سفارشی‌سازی پشتیبانی می‌کند. /keybindings را اجرا کن تا فایلِ پیکربندیِ خود را در ~/.claude/keybindings.json بسازی یا باز کنی.

فایلِ پیکربندیِ keybindings یک شیء با آرایه‌ی bindings است. هر بلاک یک کانتکست و نگاشتی از کلیدزدن‌ها به اکشن‌ها را مشخص می‌کند.

فیلدتوضیح
$schemaآدرسِ اختیاریِ JSON Schema برای تکمیلِ خودکار در ویرایشگر
$docsآدرسِ اختیاریِ مستندات
bindingsآرایه‌ای از بلاک‌های binding به‌تفکیکِ کانتکست

این مثال Ctrl+E را به بازکردنِ یک ویرایشگرِ بیرونی در کانتکستِ چت متصل می‌کند و Ctrl+U را آزاد (unbind) می‌کند:

{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+e": "chat:externalEditor",
"ctrl+u": null
}
}
]
}

هر بلاکِ binding یک کانتکست را مشخص می‌کند که bindingها در آن اعمال می‌شوند:

کانتکستتوضیح
Globalهمه‌جای اپ اعمال می‌شود
Chatناحیه‌ی اصلیِ ورودیِ چت
Autocompleteمنوی تکمیلِ خودکار باز است
Settingsمنوی تنظیمات
Confirmationدیالوگ‌های دسترسی و تأیید
Tabsاجزای پیمایشِ تب
Helpمنوی راهنما نمایان است
Transcriptنمایشگرِ رونوشت (Transcript)
HistorySearchحالتِ جست‌وجوی تاریخچه (Ctrl+R)
Taskیک تسکِ پس‌زمینه در حالِ اجراست
ThemePickerدیالوگِ انتخابگرِ تم
Attachmentsپیمایشِ پیوستِ تصویر در دیالوگ‌های انتخاب
Footerپیمایشِ نشانگرِ فوتر (تسک‌ها، تیم‌ها، diff)
MessageSelectorانتخابِ پیام در دیالوگِ rewind و خلاصه‌سازی
DiffDialogپیمایشِ نمایشگرِ diff
ModelPickerسطحِ تلاشِ انتخابگرِ مدل
Selectاجزای عمومیِ select/list
Pluginدیالوگِ پلاگین (مرور، کشف، مدیریت)
Scrollاسکرولِ گفت‌وگو و انتخابِ متن در حالتِ تمام‌صفحه
Doctorصفحه‌ی تشخیصِ /doctor

اکشن‌ها از قالبِ namespace:action پیروی می‌کنند، مثلِ chat:submit برای فرستادنِ پیام یا app:toggleTodos برای نمایشِ فهرستِ تسک‌ها. هر کانتکست اکشن‌های مخصوصِ خود را دارد.

اکشن‌های در دسترس در کانتکستِ Global:

اکشنپیش‌فرضتوضیح
app:interruptCtrl+Cلغوِ عملیاتِ جاری
app:exitCtrl+Dخروج از Claude Code
app:redraw(بدونِ binding)بازترسیمِ اجباریِ ترمینال
app:toggleTodosCtrl+Tنمایش/پنهان‌سازیِ فهرستِ تسک‌ها
app:toggleTranscriptCtrl+Oنمایش/پنهان‌سازیِ رونوشتِ مفصل

اکشن‌های مربوط به پیمایشِ تاریخچه‌ی دستورها:

اکشنپیش‌فرضتوضیح
history:searchCtrl+Rبازکردنِ جست‌وجوی تاریخچه
history:previousUpموردِ قبلیِ تاریخچه
history:nextDownموردِ بعدیِ تاریخچه

اکشن‌های در دسترس در کانتکستِ Chat:

اکشنپیش‌فرضتوضیح
chat:cancelEscapeلغوِ ورودیِ جاری
chat:clearInputCtrl+Lبازترسیمِ کاملِ صفحه با حفظِ ورودی. در رندرِ تمام‌صفحه، طیِ دو ثانیه دو بار بزن تا /clear اجرا شود
chat:clearScreenCmd+Kدر رندرِ تمام‌صفحه، طیِ دو ثانیه دو بار بزن تا /clear اجرا شود
chat:killAgentsCtrl+X Ctrl+Kتوقفِ همه‌ی ساب‌ایجنت‌های پس‌زمینه‌ی در حالِ اجرا در این نشست
chat:cycleModeShift+Tab*چرخش بینِ حالت‌های دسترسی
chat:modelPickerMeta+Pبازکردنِ انتخابگرِ مدل
chat:fastModeMeta+Oروشن/خاموش‌کردنِ fast mode
chat:thinkingToggleMeta+Tروشن/خاموش‌کردنِ extended thinking
chat:submitEnterفرستادنِ پیام
chat:newlineCtrl+Jدرجِ یک خطِ تازه بدونِ فرستادن
chat:undoCtrl+_, Ctrl+Shift+-واگردِ آخرین اکشن
chat:externalEditorCtrl+G, Ctrl+X Ctrl+Eبازکردن در ویرایشگرِ بیرونی
chat:stashCtrl+Sذخیره‌ی موقتِ پرامپتِ جاری
chat:imagePasteCtrl+V (روی Windows و WSL: Alt+V)چسباندنِ تصویر از clipboard. روی WSL هر دو میان‌بر به‌طورِ پیش‌فرض متصل‌اند

*روی Windows بدونِ حالتِ VT (Node <24.2.0/<22.17.0, Bun <1.2.23)، پیش‌فرض Meta+M است.

اکشن‌های تکمیلِ خودکار

Section titled “اکشن‌های تکمیلِ خودکار”

اکشن‌های در دسترس در کانتکستِ Autocomplete:

اکشنپیش‌فرضتوضیح
autocomplete:acceptTabپذیرشِ پیشنهاد
autocomplete:dismissEscapeبستنِ منو
autocomplete:previousUpپیشنهادِ قبلی
autocomplete:nextDownپیشنهادِ بعدی

اکشن‌های در دسترس در کانتکستِ Confirmation:

اکشنپیش‌فرضتوضیح
confirm:yesY, Enterتأییدِ اکشن
confirm:noN, Escapeردِ اکشن
confirm:previousUpگزینه‌ی قبلی
confirm:nextDownگزینه‌ی بعدی
confirm:nextFieldTabفیلدِ بعدی
confirm:previousField(بدونِ binding)فیلدِ قبلی
confirm:toggleSpaceتغییرِ وضعیتِ انتخاب
confirm:cycleModeShift+Tabچرخش بینِ حالت‌های دسترسی
confirm:toggleExplanationCtrl+Eنمایش/پنهان‌سازیِ توضیحِ دسترسی

اکشن‌های در دسترس در کانتکستِ Confirmation برای دیالوگ‌های دسترسی:

اکشنپیش‌فرضتوضیح
permission:toggleDebug(بدونِ binding)نمایش/پنهان‌سازیِ اطلاعاتِ دیباگِ دسترسی. پیش‌فرضِ قبلیِ Ctrl+D در v2.1.146 حذف شد چون app:exit را پوشش می‌داد

اکشن‌های در دسترس در کانتکستِ Transcript:

اکشنپیش‌فرضتوضیح
transcript:toggleShowAllCtrl+Eنمایش/پنهان‌سازیِ همه‌ی محتوا
transcript:exitq, Ctrl+C, Escapeخروج از نمای رونوشت

اکشن‌های جست‌وجوی تاریخچه

Section titled “اکشن‌های جست‌وجوی تاریخچه”

اکشن‌های در دسترس در کانتکستِ HistorySearch:

اکشنپیش‌فرضتوضیح
historySearch:nextCtrl+Rتطبیقِ بعدی
historySearch:acceptEscape, Tabپذیرشِ انتخاب
historySearch:cancelCtrl+Cلغوِ جست‌وجو
historySearch:executeEnterاجرای دستورِ انتخاب‌شده
historySearch:cycleScopeCtrl+Sچرخشِ دامنه: نشست، پروژه، همه‌جا

اکشن‌های در دسترس در کانتکستِ Task:

اکشنپیش‌فرضتوضیح
task:backgroundCtrl+B, Ctrl+X Ctrl+Bبردنِ تسکِ جاری به پس‌زمینه. {/* min-version: 2.1.169 */}کوردِ Ctrl+X Ctrl+B به v2.1.169 یا بالاتر نیاز دارد و از تداخل با پیشوندِ tmux پرهیز می‌کند

اکشن‌های در دسترس در کانتکستِ ThemePicker:

اکشنپیش‌فرضتوضیح
theme:toggleSyntaxHighlightingCtrl+Tروشن/خاموش‌کردنِ هایلایتِ سینتکس

اکشن‌های در دسترس در کانتکستِ Help:

اکشنپیش‌فرضتوضیح
help:dismissEscapeبستنِ منوی راهنما

اکشن‌های در دسترس در کانتکستِ Tabs:

اکشنپیش‌فرضتوضیح
tabs:nextTab, Rightتبِ بعدی
tabs:previousShift+Tab, Leftتبِ قبلی

اکشن‌های در دسترس در کانتکستِ Attachments:

اکشنپیش‌فرضتوضیح
attachments:nextRightپیوستِ بعدی
attachments:previousLeftپیوستِ قبلی
attachments:removeBackspace, Deleteحذفِ پیوستِ انتخاب‌شده
attachments:exitDown, Escapeخروج از پیمایشِ پیوست

اکشن‌های در دسترس در کانتکستِ Footer:

اکشنپیش‌فرضتوضیح
footer:nextRightموردِ بعدیِ فوتر
footer:previousLeftموردِ قبلیِ فوتر
footer:upUpحرکت به بالا در فوتر (در بالا انتخاب لغو می‌شود)
footer:downDownحرکت به پایین در فوتر
footer:openSelectedEnterبازکردنِ موردِ انتخاب‌شده‌ی فوتر
footer:clearSelectionEscapeپاک‌کردنِ انتخابِ فوتر

اکشن‌های انتخابگرِ پیام

Section titled “اکشن‌های انتخابگرِ پیام”

اکشن‌های در دسترس در کانتکستِ MessageSelector:

اکشنپیش‌فرضتوضیح
messageSelector:upUp, K, Ctrl+Pحرکت به بالا در فهرست
messageSelector:downDown, J, Ctrl+Nحرکت به پایین در فهرست
messageSelector:topCtrl+Up, Shift+Up, Meta+Up, Shift+Kپرش به بالا
messageSelector:bottomCtrl+Down, Shift+Down, Meta+Down, Shift+Jپرش به پایین
messageSelector:selectEnterانتخابِ پیام

اکشن‌های در دسترس در کانتکستِ DiffDialog:

اکشنپیش‌فرضتوضیح
diff:dismissEscapeبستنِ نمایشگرِ diff
diff:previousSourceLeftمنبعِ diffِ قبلی
diff:nextSourceRightمنبعِ diffِ بعدی
diff:previousFileUp, Kفایلِ قبلی در فهرستِ فایل‌ها؛ یک خط به بالا در نمای جزئیات
diff:nextFileDown, Jفایلِ بعدی در فهرستِ فایل‌ها؛ یک خط به پایین در نمای جزئیات
diff:viewDetailsEnterدیدنِ جزئیاتِ diff
diff:back(بسته به کانتکست)بازگشت در نمایشگرِ diff

نمای جزئیاتِ diff همچنین کلیدهای سبکِ pager را به اکشن‌های اسکرولِ استاندارد متصل می‌کند. این bindingها بخشی از کانتکستِ DiffDialog هستند و تنها در نمای جزئیات اعمال می‌شوند؛ پیش‌فرض‌های کانتکستِ Scroll که زیرِ اکشن‌های اسکرول فهرست شده‌اند بدونِ تغییر می‌مانند.

اکشنپیش‌فرضتوضیح
scroll:pageUpPageUpاسکرول به بالا به‌اندازه‌ی نیمِ viewport
scroll:pageDownPageDownاسکرول به پایین به‌اندازه‌ی نیمِ viewport
scroll:fullPageUpShift+Space, Bاسکرول به بالا به‌اندازه‌ی یک viewportِ کامل
scroll:fullPageDownSpaceاسکرول به پایین به‌اندازه‌ی یک viewportِ کامل
scroll:topG, Homeپرش به بالا
scroll:bottomShift+G, Endپرش به پایین

اکشن‌های انتخابگرِ مدل

Section titled “اکشن‌های انتخابگرِ مدل”

اکشن‌های در دسترس در کانتکستِ ModelPicker:

اکشنپیش‌فرضتوضیح
modelPicker:decreaseEffortLeftکاهشِ سطحِ تلاش
modelPicker:increaseEffortRightافزایشِ سطحِ تلاش
modelPicker:thisSessionOnlysاعمالِ مدلِ هایلایت‌شده فقط به این نشست

اکشن‌های در دسترس در کانتکستِ Select:

اکشنپیش‌فرضتوضیح
select:nextDown, J, Ctrl+Nگزینه‌ی بعدی
select:previousUp, K, Ctrl+Pگزینه‌ی قبلی
select:acceptEnterپذیرشِ انتخاب
select:cancelEscapeلغوِ انتخاب

اکشن‌های در دسترس در کانتکستِ Plugin:

اکشنپیش‌فرضتوضیح
plugin:toggleSpaceتغییرِ وضعیتِ انتخابِ پلاگین
plugin:installIنصبِ پلاگین‌های انتخاب‌شده
plugin:favoriteFعلاقه‌مند کردنِ پلاگینِ انتخاب‌شده تا نزدیکِ بالای تبِ Installed مرتب شود

اکشن‌های در دسترس در کانتکستِ Settings:

اکشنپیش‌فرضتوضیح
settings:search/ورود به حالتِ جست‌وجو
settings:retryRتلاشِ دوباره برای بارگذاریِ داده‌ی استفاده (هنگامِ خطا)
settings:closeEnterذخیره‌ی تغییرات و بستنِ پنلِ پیکربندی. Escape تغییرات را دور می‌ریزد و می‌بندد

اکشن‌های در دسترس در کانتکستِ Doctor:

اکشنپیش‌فرضتوضیح
doctor:fixFفرستادنِ گزارشِ تشخیص به Claude برای رفعِ مشکلاتِ گزارش‌شده. تنها وقتی مشکلی پیدا شود فعال است

اکشن‌های در دسترس در کانتکستِ Chat وقتی دیکته‌ی صوتی فعال باشد:

اکشنپیش‌فرضتوضیح
voice:pushToTalkSpaceدیکته‌ی یک پرامپت. بسته به حالتِ /voice، نگه‌دار یا یک‌بار بزن

اکشن‌های در دسترس در کانتکستِ Scroll وقتی رندرِ تمام‌صفحه فعال باشد:

اکشنپیش‌فرضتوضیح
scroll:lineUp(بدونِ binding)اسکرول به بالا یک خط. اسکرول با چرخِ ماوس این اکشن را فعال می‌کند
scroll:lineDown(بدونِ binding)اسکرول به پایین یک خط. اسکرول با چرخِ ماوس این اکشن را فعال می‌کند
scroll:pageUpPageUpاسکرول به بالا به‌اندازه‌ی نیمِ ارتفاعِ viewport
scroll:pageDownPageDownاسکرول به پایین به‌اندازه‌ی نیمِ ارتفاعِ viewport
scroll:topCtrl+Homeپرش به ابتدای گفت‌وگو
scroll:bottomCtrl+Endپرش به آخرین پیام و فعال‌سازیِ دوباره‌ی دنبال‌کردنِ خودکار
scroll:halfPageUp(بدونِ binding)اسکرول به بالا به‌اندازه‌ی نیمِ ارتفاعِ viewport. رفتاری همانندِ scroll:pageUp، برای rebindهای سبکِ vi فراهم شده
scroll:halfPageDown(بدونِ binding)اسکرول به پایین به‌اندازه‌ی نیمِ ارتفاعِ viewport. رفتاری همانندِ scroll:pageDown، برای rebindهای سبکِ vi فراهم شده
scroll:fullPageUp(بدونِ binding)اسکرول به بالا به‌اندازه‌ی ارتفاعِ کاملِ viewport
scroll:fullPageDown(بدونِ binding)اسکرول به پایین به‌اندازه‌ی ارتفاعِ کاملِ viewport
selection:copyCtrl+Shift+C / Cmd+Cکپیِ متنِ انتخاب‌شده به clipboard
selection:clear(بدونِ binding)پاک‌کردنِ انتخابِ فعالِ متن
selection:extendLeftShift+Leftگسترشِ انتخابِ فعال یک ستون به چپ
selection:extendRightShift+Rightگسترشِ انتخابِ فعال یک ستون به راست
selection:extendUpShift+Upگسترشِ انتخابِ فعال یک ردیف به بالا. وقتی انتخاب به لبه‌ی بالا برسد viewport اسکرول می‌شود
selection:extendDownShift+Downگسترشِ انتخابِ فعال یک ردیف به پایین. وقتی انتخاب به لبه‌ی پایین برسد viewport اسکرول می‌شود
selection:extendLineStartShift+Homeگسترشِ انتخابِ فعال تا ابتدای خط
selection:extendLineEndShift+Endگسترشِ انتخابِ فعال تا انتهای خط

کلیدهای modifier را با جداکننده‌ی + به‌کار ببر:

  • ctrl یا control — کلیدِ Control
  • shift — کلیدِ Shift
  • alt, opt, option, یا meta — کلیدِ Alt روی Windows و Linux، کلیدِ Option روی macOS
  • cmd, command, super, یا win — کلیدِ Command روی macOS، کلیدِ Windows روی Windows، کلیدِ Super روی Linux

گروهِ cmd تنها در ترمینال‌هایی تشخیص داده می‌شود که modifierِ Super را گزارش می‌کنند، مثلِ آن‌هایی که از پروتکلِ صفحه‌کلیدِ Kitty یا حالتِ modifyOtherKeys در xterm پشتیبانی می‌کنند. بیشترِ ترمینال‌ها آن را نمی‌فرستند، پس برای bindingهایی که می‌خواهی همه‌جا کار کنند از ctrl یا meta استفاده کن.

برای مثال:

ctrl+k Ctrl + K
shift+tab Shift + Tab
meta+p Option + P on macOS, Alt + P elsewhere
ctrl+shift+c Multiple modifiers

یک حرفِ بزرگِ تنها به‌معنای Shift است. برای مثال، K معادلِ shift+k است. این برای bindingهای سبکِ vim مفید است که در آن‌ها کلیدهای بزرگ و کوچک معانیِ متفاوتی دارند.

حروفِ بزرگ همراه با modifier (مثلِ ctrl+K) سلیقه‌ای تلقی می‌شوند و به‌معنای Shift نیستند: ctrl+K همان ctrl+k است.

کوردها دنباله‌هایی از کلیدزدن‌ها هستند که با فاصله از هم جدا می‌شوند:

ctrl+k ctrl+s Press Ctrl+K, release, then Ctrl+S
  • escape یا esc — کلیدِ Escape
  • enter یا return — کلیدِ Enter
  • tab — کلیدِ Tab
  • space — Space bar
  • up, down, left, right — کلیدهای جهت
  • backspace, delete — کلیدهای حذف

آزادکردنِ میان‌برهای پیش‌فرض

Section titled “آزادکردنِ میان‌برهای پیش‌فرض”

یک اکشن را روی null بگذار تا میان‌برِ پیش‌فرض آزاد (unbind) شود:

{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+s": null
}
}
]
}

این برای bindingهای کورد هم کار می‌کند. آزادکردنِ هر کوردی که یک پیشوندِ مشترک دارد، آن پیشوند را برای استفاده به‌عنوانِ یک bindingِ تک‌کلیدی آزاد می‌کند:

{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+x ctrl+k": null,
"ctrl+x ctrl+e": null,
"ctrl+x": "chat:newline"
}
}
]
}

اگر برخی از کوردهای یک پیشوند را آزاد کنی ولی نه همه را، فشردنِ آن پیشوند همچنان برای bindingهای باقی‌مانده واردِ حالتِ انتظارِ کورد می‌شود.

این میان‌برها قابلِ تغییر نیستند:

میان‌بردلیل
Ctrl+Cوقفه/لغوِ سخت‌کدشده
Ctrl+Dخروجِ سخت‌کدشده
Ctrl+Mمعادلِ Enter در ترمینال‌ها (هر دو CR می‌فرستند)
Caps Lockبه اپلیکیشن‌های ترمینال تحویل داده نمی‌شود

برخی میان‌برها ممکن است با مالتی‌پلکسرهای ترمینال تداخل داشته باشند:

میان‌برتداخل
Ctrl+Bپیشوندِ tmux (برای فرستادن دو بار بزن)
Ctrl+Aپیشوندِ GNU screen
Ctrl+Zمعلق‌سازیِ فرایندِ Unix (SIGTSTP)

وقتی حالتِ vim از طریقِ /config ← Editor mode فعال باشد، keybindingها و حالتِ vim مستقل از هم کار می‌کنند:

  • حالتِ Vim ورودی را در سطحِ ورودیِ متن مدیریت می‌کند (حرکتِ مکان‌نما، حالت‌ها، motionها)
  • Keybindingها اکشن‌ها را در سطحِ اجزا مدیریت می‌کنند (نمایش/پنهان‌سازیِ todoها، submit، و غیره)
  • کلیدِ Escape در حالتِ vim از INSERT به NORMAL سوییچ می‌کند؛ chat:cancel را فعال نمی‌کند
  • بیشترِ میان‌برهای Ctrl+key از حالتِ vim عبور می‌کنند و به سیستمِ keybinding می‌رسند
  • در حالتِ NORMALِ vim، ? منوی راهنما را نشان می‌دهد (رفتارِ vim)
  • در حالتِ NORMALِ vim، / جست‌وجوی تاریخچه را باز می‌کند، درست مثلِ Ctrl+R در حالتِ استاندارد

Claude Code keybindingهای تو را اعتبارسنجی می‌کند و برای این موارد هشدار نشان می‌دهد:

  • خطاهای تجزیه (JSON یا ساختارِ نامعتبر)
  • نام‌های کانتکستِ نامعتبر
  • تداخل با میان‌برهای رزروشده
  • تداخل با مالتی‌پلکسرِ ترمینال
  • bindingهای تکراری در یک کانتکستِ یکسان

/doctor را اجرا کن تا هر هشدارِ مربوط به keybinding را ببینی.