سفارشیسازیِ میانبرهای صفحهکلید
Claude Code از میانبرهای صفحهکلیدِ قابلِ سفارشیسازی پشتیبانی میکند. /keybindings را اجرا کن تا فایلِ پیکربندیِ خود را در ~/.claude/keybindings.json بسازی یا باز کنی.
فایلِ پیکربندی
Section titled “فایلِ پیکربندی”فایلِ پیکربندیِ 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 } } ]}کانتکستها
Section titled “کانتکستها”هر بلاکِ 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 |
اکشنهای در دسترس
Section titled “اکشنهای در دسترس”اکشنها از قالبِ namespace:action پیروی میکنند، مثلِ chat:submit برای فرستادنِ پیام یا app:toggleTodos برای نمایشِ فهرستِ تسکها. هر کانتکست اکشنهای مخصوصِ خود را دارد.
اکشنهای اپ
Section titled “اکشنهای اپ”اکشنهای در دسترس در کانتکستِ Global:
| اکشن | پیشفرض | توضیح |
|---|---|---|
app:interrupt | Ctrl+C | لغوِ عملیاتِ جاری |
app:exit | Ctrl+D | خروج از Claude Code |
app:redraw | (بدونِ binding) | بازترسیمِ اجباریِ ترمینال |
app:toggleTodos | Ctrl+T | نمایش/پنهانسازیِ فهرستِ تسکها |
app:toggleTranscript | Ctrl+O | نمایش/پنهانسازیِ رونوشتِ مفصل |
اکشنهای تاریخچه
Section titled “اکشنهای تاریخچه”اکشنهای مربوط به پیمایشِ تاریخچهی دستورها:
| اکشن | پیشفرض | توضیح |
|---|---|---|
history:search | Ctrl+R | بازکردنِ جستوجوی تاریخچه |
history:previous | Up | موردِ قبلیِ تاریخچه |
history:next | Down | موردِ بعدیِ تاریخچه |
اکشنهای چت
Section titled “اکشنهای چت”اکشنهای در دسترس در کانتکستِ Chat:
| اکشن | پیشفرض | توضیح |
|---|---|---|
chat:cancel | Escape | لغوِ ورودیِ جاری |
chat:clearInput | Ctrl+L | بازترسیمِ کاملِ صفحه با حفظِ ورودی. در رندرِ تمامصفحه، طیِ دو ثانیه دو بار بزن تا /clear اجرا شود |
chat:clearScreen | Cmd+K | در رندرِ تمامصفحه، طیِ دو ثانیه دو بار بزن تا /clear اجرا شود |
chat:killAgents | Ctrl+X Ctrl+K | توقفِ همهی سابایجنتهای پسزمینهی در حالِ اجرا در این نشست |
chat:cycleMode | Shift+Tab* | چرخش بینِ حالتهای دسترسی |
chat:modelPicker | Meta+P | بازکردنِ انتخابگرِ مدل |
chat:fastMode | Meta+O | روشن/خاموشکردنِ fast mode |
chat:thinkingToggle | Meta+T | روشن/خاموشکردنِ extended thinking |
chat:submit | Enter | فرستادنِ پیام |
chat:newline | Ctrl+J | درجِ یک خطِ تازه بدونِ فرستادن |
chat:undo | Ctrl+_, Ctrl+Shift+- | واگردِ آخرین اکشن |
chat:externalEditor | Ctrl+G, Ctrl+X Ctrl+E | بازکردن در ویرایشگرِ بیرونی |
chat:stash | Ctrl+S | ذخیرهی موقتِ پرامپتِ جاری |
chat:imagePaste | Ctrl+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:accept | Tab | پذیرشِ پیشنهاد |
autocomplete:dismiss | Escape | بستنِ منو |
autocomplete:previous | Up | پیشنهادِ قبلی |
autocomplete:next | Down | پیشنهادِ بعدی |
اکشنهای تأیید
Section titled “اکشنهای تأیید”اکشنهای در دسترس در کانتکستِ Confirmation:
| اکشن | پیشفرض | توضیح |
|---|---|---|
confirm:yes | Y, Enter | تأییدِ اکشن |
confirm:no | N, Escape | ردِ اکشن |
confirm:previous | Up | گزینهی قبلی |
confirm:next | Down | گزینهی بعدی |
confirm:nextField | Tab | فیلدِ بعدی |
confirm:previousField | (بدونِ binding) | فیلدِ قبلی |
confirm:toggle | Space | تغییرِ وضعیتِ انتخاب |
confirm:cycleMode | Shift+Tab | چرخش بینِ حالتهای دسترسی |
confirm:toggleExplanation | Ctrl+E | نمایش/پنهانسازیِ توضیحِ دسترسی |
اکشنهای دسترسی
Section titled “اکشنهای دسترسی”اکشنهای در دسترس در کانتکستِ Confirmation برای دیالوگهای دسترسی:
| اکشن | پیشفرض | توضیح |
|---|---|---|
permission:toggleDebug | (بدونِ binding) | نمایش/پنهانسازیِ اطلاعاتِ دیباگِ دسترسی. پیشفرضِ قبلیِ Ctrl+D در v2.1.146 حذف شد چون app:exit را پوشش میداد |
اکشنهای رونوشت
Section titled “اکشنهای رونوشت”اکشنهای در دسترس در کانتکستِ Transcript:
| اکشن | پیشفرض | توضیح |
|---|---|---|
transcript:toggleShowAll | Ctrl+E | نمایش/پنهانسازیِ همهی محتوا |
transcript:exit | q, Ctrl+C, Escape | خروج از نمای رونوشت |
اکشنهای جستوجوی تاریخچه
Section titled “اکشنهای جستوجوی تاریخچه”اکشنهای در دسترس در کانتکستِ HistorySearch:
| اکشن | پیشفرض | توضیح |
|---|---|---|
historySearch:next | Ctrl+R | تطبیقِ بعدی |
historySearch:accept | Escape, Tab | پذیرشِ انتخاب |
historySearch:cancel | Ctrl+C | لغوِ جستوجو |
historySearch:execute | Enter | اجرای دستورِ انتخابشده |
historySearch:cycleScope | Ctrl+S | چرخشِ دامنه: نشست، پروژه، همهجا |
اکشنهای تسک
Section titled “اکشنهای تسک”اکشنهای در دسترس در کانتکستِ Task:
| اکشن | پیشفرض | توضیح |
|---|---|---|
task:background | Ctrl+B, Ctrl+X Ctrl+B | بردنِ تسکِ جاری به پسزمینه. {/* min-version: 2.1.169 */}کوردِ Ctrl+X Ctrl+B به v2.1.169 یا بالاتر نیاز دارد و از تداخل با پیشوندِ tmux پرهیز میکند |
اکشنهای تم
Section titled “اکشنهای تم”اکشنهای در دسترس در کانتکستِ ThemePicker:
| اکشن | پیشفرض | توضیح |
|---|---|---|
theme:toggleSyntaxHighlighting | Ctrl+T | روشن/خاموشکردنِ هایلایتِ سینتکس |
اکشنهای راهنما
Section titled “اکشنهای راهنما”اکشنهای در دسترس در کانتکستِ Help:
| اکشن | پیشفرض | توضیح |
|---|---|---|
help:dismiss | Escape | بستنِ منوی راهنما |
اکشنهای تبها
Section titled “اکشنهای تبها”اکشنهای در دسترس در کانتکستِ Tabs:
| اکشن | پیشفرض | توضیح |
|---|---|---|
tabs:next | Tab, Right | تبِ بعدی |
tabs:previous | Shift+Tab, Left | تبِ قبلی |
اکشنهای پیوستها
Section titled “اکشنهای پیوستها”اکشنهای در دسترس در کانتکستِ Attachments:
| اکشن | پیشفرض | توضیح |
|---|---|---|
attachments:next | Right | پیوستِ بعدی |
attachments:previous | Left | پیوستِ قبلی |
attachments:remove | Backspace, Delete | حذفِ پیوستِ انتخابشده |
attachments:exit | Down, Escape | خروج از پیمایشِ پیوست |
اکشنهای فوتر
Section titled “اکشنهای فوتر”اکشنهای در دسترس در کانتکستِ Footer:
| اکشن | پیشفرض | توضیح |
|---|---|---|
footer:next | Right | موردِ بعدیِ فوتر |
footer:previous | Left | موردِ قبلیِ فوتر |
footer:up | Up | حرکت به بالا در فوتر (در بالا انتخاب لغو میشود) |
footer:down | Down | حرکت به پایین در فوتر |
footer:openSelected | Enter | بازکردنِ موردِ انتخابشدهی فوتر |
footer:clearSelection | Escape | پاککردنِ انتخابِ فوتر |
اکشنهای انتخابگرِ پیام
Section titled “اکشنهای انتخابگرِ پیام”اکشنهای در دسترس در کانتکستِ MessageSelector:
| اکشن | پیشفرض | توضیح |
|---|---|---|
messageSelector:up | Up, K, Ctrl+P | حرکت به بالا در فهرست |
messageSelector:down | Down, J, Ctrl+N | حرکت به پایین در فهرست |
messageSelector:top | Ctrl+Up, Shift+Up, Meta+Up, Shift+K | پرش به بالا |
messageSelector:bottom | Ctrl+Down, Shift+Down, Meta+Down, Shift+J | پرش به پایین |
messageSelector:select | Enter | انتخابِ پیام |
اکشنهای diff
Section titled “اکشنهای diff”اکشنهای در دسترس در کانتکستِ DiffDialog:
| اکشن | پیشفرض | توضیح |
|---|---|---|
diff:dismiss | Escape | بستنِ نمایشگرِ diff |
diff:previousSource | Left | منبعِ diffِ قبلی |
diff:nextSource | Right | منبعِ diffِ بعدی |
diff:previousFile | Up, K | فایلِ قبلی در فهرستِ فایلها؛ یک خط به بالا در نمای جزئیات |
diff:nextFile | Down, J | فایلِ بعدی در فهرستِ فایلها؛ یک خط به پایین در نمای جزئیات |
diff:viewDetails | Enter | دیدنِ جزئیاتِ diff |
diff:back | (بسته به کانتکست) | بازگشت در نمایشگرِ diff |
نمای جزئیاتِ diff همچنین کلیدهای سبکِ pager را به اکشنهای اسکرولِ استاندارد متصل میکند. این bindingها بخشی از کانتکستِ DiffDialog هستند و تنها در نمای جزئیات اعمال میشوند؛ پیشفرضهای کانتکستِ Scroll که زیرِ اکشنهای اسکرول فهرست شدهاند بدونِ تغییر میمانند.
| اکشن | پیشفرض | توضیح |
|---|---|---|
scroll:pageUp | PageUp | اسکرول به بالا بهاندازهی نیمِ viewport |
scroll:pageDown | PageDown | اسکرول به پایین بهاندازهی نیمِ viewport |
scroll:fullPageUp | Shift+Space, B | اسکرول به بالا بهاندازهی یک viewportِ کامل |
scroll:fullPageDown | Space | اسکرول به پایین بهاندازهی یک viewportِ کامل |
scroll:top | G, Home | پرش به بالا |
scroll:bottom | Shift+G, End | پرش به پایین |
اکشنهای انتخابگرِ مدل
Section titled “اکشنهای انتخابگرِ مدل”اکشنهای در دسترس در کانتکستِ ModelPicker:
| اکشن | پیشفرض | توضیح |
|---|---|---|
modelPicker:decreaseEffort | Left | کاهشِ سطحِ تلاش |
modelPicker:increaseEffort | Right | افزایشِ سطحِ تلاش |
modelPicker:thisSessionOnly | s | اعمالِ مدلِ هایلایتشده فقط به این نشست |
اکشنهای select
Section titled “اکشنهای select”اکشنهای در دسترس در کانتکستِ Select:
| اکشن | پیشفرض | توضیح |
|---|---|---|
select:next | Down, J, Ctrl+N | گزینهی بعدی |
select:previous | Up, K, Ctrl+P | گزینهی قبلی |
select:accept | Enter | پذیرشِ انتخاب |
select:cancel | Escape | لغوِ انتخاب |
اکشنهای پلاگین
Section titled “اکشنهای پلاگین”اکشنهای در دسترس در کانتکستِ Plugin:
| اکشن | پیشفرض | توضیح |
|---|---|---|
plugin:toggle | Space | تغییرِ وضعیتِ انتخابِ پلاگین |
plugin:install | I | نصبِ پلاگینهای انتخابشده |
plugin:favorite | F | علاقهمند کردنِ پلاگینِ انتخابشده تا نزدیکِ بالای تبِ Installed مرتب شود |
اکشنهای تنظیمات
Section titled “اکشنهای تنظیمات”اکشنهای در دسترس در کانتکستِ Settings:
| اکشن | پیشفرض | توضیح |
|---|---|---|
settings:search | / | ورود به حالتِ جستوجو |
settings:retry | R | تلاشِ دوباره برای بارگذاریِ دادهی استفاده (هنگامِ خطا) |
settings:close | Enter | ذخیرهی تغییرات و بستنِ پنلِ پیکربندی. Escape تغییرات را دور میریزد و میبندد |
اکشنهای Doctor
Section titled “اکشنهای Doctor”اکشنهای در دسترس در کانتکستِ Doctor:
| اکشن | پیشفرض | توضیح |
|---|---|---|
doctor:fix | F | فرستادنِ گزارشِ تشخیص به Claude برای رفعِ مشکلاتِ گزارششده. تنها وقتی مشکلی پیدا شود فعال است |
اکشنهای صدا
Section titled “اکشنهای صدا”اکشنهای در دسترس در کانتکستِ Chat وقتی دیکتهی صوتی فعال باشد:
| اکشن | پیشفرض | توضیح |
|---|---|---|
voice:pushToTalk | Space | دیکتهی یک پرامپت. بسته به حالتِ /voice، نگهدار یا یکبار بزن |
اکشنهای اسکرول
Section titled “اکشنهای اسکرول”اکشنهای در دسترس در کانتکستِ Scroll وقتی رندرِ تمامصفحه فعال باشد:
| اکشن | پیشفرض | توضیح |
|---|---|---|
scroll:lineUp | (بدونِ binding) | اسکرول به بالا یک خط. اسکرول با چرخِ ماوس این اکشن را فعال میکند |
scroll:lineDown | (بدونِ binding) | اسکرول به پایین یک خط. اسکرول با چرخِ ماوس این اکشن را فعال میکند |
scroll:pageUp | PageUp | اسکرول به بالا بهاندازهی نیمِ ارتفاعِ viewport |
scroll:pageDown | PageDown | اسکرول به پایین بهاندازهی نیمِ ارتفاعِ viewport |
scroll:top | Ctrl+Home | پرش به ابتدای گفتوگو |
scroll:bottom | Ctrl+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:copy | Ctrl+Shift+C / Cmd+C | کپیِ متنِ انتخابشده به clipboard |
selection:clear | (بدونِ binding) | پاککردنِ انتخابِ فعالِ متن |
selection:extendLeft | Shift+Left | گسترشِ انتخابِ فعال یک ستون به چپ |
selection:extendRight | Shift+Right | گسترشِ انتخابِ فعال یک ستون به راست |
selection:extendUp | Shift+Up | گسترشِ انتخابِ فعال یک ردیف به بالا. وقتی انتخاب به لبهی بالا برسد viewport اسکرول میشود |
selection:extendDown | Shift+Down | گسترشِ انتخابِ فعال یک ردیف به پایین. وقتی انتخاب به لبهی پایین برسد viewport اسکرول میشود |
selection:extendLineStart | Shift+Home | گسترشِ انتخابِ فعال تا ابتدای خط |
selection:extendLineEnd | Shift+End | گسترشِ انتخابِ فعال تا انتهای خط |
سینتکسِ کلیدزدن
Section titled “سینتکسِ کلیدزدن”Modifierها
Section titled “Modifierها”کلیدهای modifier را با جداکنندهی + بهکار ببر:
ctrlیاcontrol— کلیدِ Controlshift— کلیدِ Shiftalt,opt,option, یاmeta— کلیدِ Alt روی Windows و Linux، کلیدِ Option روی macOScmd,command,super, یاwin— کلیدِ Command روی macOS، کلیدِ Windows روی Windows، کلیدِ Super روی Linux
گروهِ cmd تنها در ترمینالهایی تشخیص داده میشود که modifierِ Super را گزارش میکنند، مثلِ آنهایی که از پروتکلِ صفحهکلیدِ Kitty یا حالتِ modifyOtherKeys در xterm پشتیبانی میکنند. بیشترِ ترمینالها آن را نمیفرستند، پس برای bindingهایی که میخواهی همهجا کار کنند از ctrl یا meta استفاده کن.
برای مثال:
ctrl+k Ctrl + Kshift+tab Shift + Tabmeta+p Option + P on macOS, Alt + P elsewherectrl+shift+c Multiple modifiersحروفِ بزرگ
Section titled “حروفِ بزرگ”یک حرفِ بزرگِ تنها بهمعنای Shift است. برای مثال، K معادلِ shift+k است. این برای bindingهای سبکِ vim مفید است که در آنها کلیدهای بزرگ و کوچک معانیِ متفاوتی دارند.
حروفِ بزرگ همراه با modifier (مثلِ ctrl+K) سلیقهای تلقی میشوند و بهمعنای Shift نیستند: ctrl+K همان ctrl+k است.
کوردها (Chords)
Section titled “کوردها (Chords)”کوردها دنبالههایی از کلیدزدنها هستند که با فاصله از هم جدا میشوند:
ctrl+k ctrl+s Press Ctrl+K, release, then Ctrl+Sکلیدهای ویژه
Section titled “کلیدهای ویژه”escapeیاesc— کلیدِ Escapeenterیاreturn— کلیدِ Entertab— کلیدِ Tabspace— Space barup,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های باقیمانده واردِ حالتِ انتظارِ کورد میشود.
میانبرهای رزروشده
Section titled “میانبرهای رزروشده”این میانبرها قابلِ تغییر نیستند:
| میانبر | دلیل |
|---|---|
| Ctrl+C | وقفه/لغوِ سختکدشده |
| Ctrl+D | خروجِ سختکدشده |
| Ctrl+M | معادلِ Enter در ترمینالها (هر دو CR میفرستند) |
| Caps Lock | به اپلیکیشنهای ترمینال تحویل داده نمیشود |
تداخلهای ترمینال
Section titled “تداخلهای ترمینال”برخی میانبرها ممکن است با مالتیپلکسرهای ترمینال تداخل داشته باشند:
| میانبر | تداخل |
|---|---|
| Ctrl+B | پیشوندِ tmux (برای فرستادن دو بار بزن) |
| Ctrl+A | پیشوندِ GNU screen |
| Ctrl+Z | معلقسازیِ فرایندِ Unix (SIGTSTP) |
تعامل با حالتِ Vim
Section titled “تعامل با حالتِ Vim”وقتی حالتِ 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 در حالتِ استاندارد
اعتبارسنجی
Section titled “اعتبارسنجی”Claude Code keybindingهای تو را اعتبارسنجی میکند و برای این موارد هشدار نشان میدهد:
- خطاهای تجزیه (JSON یا ساختارِ نامعتبر)
- نامهای کانتکستِ نامعتبر
- تداخل با میانبرهای رزروشده
- تداخل با مالتیپلکسرِ ترمینال
- bindingهای تکراری در یک کانتکستِ یکسان
/doctor را اجرا کن تا هر هشدارِ مربوط به keybinding را ببینی.