FISH-TERMINAL-COMPATIBILITY(1) fish-shell FISH-TERMINAL-COMPATIBILITY(1)

fish-terminal-compatibility - سازگاری و تنظیمات شبیه‌سازهای ترمینال در پوسته فیش

پوستهٔ fish توالی‌های کنترلی مختلفی را به ترمینال ارسال می‌کند. برخی از این توالی‌ها باید برای فعال‌سازی قابلیت‌های پایه‌ای پیاده‌سازی شوند، در حالی که برخی دیگر ویژگی‌های اختیاری را فعال می‌کنند و ممکن است توسط ترمینال نادیده گرفته شوند.

ترمینال باید قادر به تجزیهٔ دستورات معرفی توالی کنترلی (CSI)، دستورات سیستم‌عامل (OSC) و به‌صورت اختیاری رشته‌های کنترل دستگاه (DCS) باشد. این موارد توسط استاندارد ECMA-48 تعریف شده‌اند. اگر یک توالی معتبر CSI، OSC یا DCS نشان‌دهندهٔ دستوری نباشد که توسط ترمینال پیاده‌سازی شده است، ترمینال باید آن را نادیده بگیرد.

توالی‌های کنترلی با ساختار نحوی شبیه به fish مشخص می‌شوند. نویسه‌های خاص به‌جز \ اسکیپ نمی‌شوند. فاصله‌ها صرفاً برای خوانایی افزوده شده‌اند و بخشی از توالی نیستند. متغیرهای جایگزین به‌صورت Ps برای یک عدد یا Pt برای یک رشتهٔ قابل‌چاپ دلخواه نوشته می‌شوند.

نکته: پوستهٔ fish به پایگاه‌دادهٔ terminfo سیستم شما وابسته نیست. در این سند، کدهای terminfo (TI) صرفاً جهت ارجاع و راهنمایی آورده شده‌اند.

توالی TI توضیحات
\r n/a انتقال مکان‌نما به ابتدای سطر.
\n cud1 انتقال مکان‌نما یک سطر به پایین.
\e[ Ps A cuu انتقال مکان‌نما به بالا به تعداد Ps ستون (یا یک ستون در صورت نبود پارامتر).
\e[ Ps C cuf انتقال مکان‌نما به راست به تعداد Ps ستون (یا یک ستون در صورت نبود پارامتر).
\x08 cub1 انتقال مکان‌نما یک ستون به چپ.
\e[ Ps D cub انتقال مکان‌نما به چپ به تعداد Ps بار.
\e[H cup تنظیم موقعیت مکان‌نما (بدون پارامتر به معنای: انتقال به سطر ۱، ستون ۱).
\e[K el پاک کردن تا انتهای سطر.
\e[J ed پاک کردن تا انتهای صفحه نمایش.
\e[2J clear پاک کردن صفحه نمایش.
\e[0c درخواست صفت‌های اولیهٔ دستگاه (Primary Device Attribute). ترمینال باید با یک دستور CSI پاسخ دهد که با بایت پارامتر ? شروع شده (یعنی توالی‌ای که با \e[? شروع می‌شود) و بایت پایانی آن c باشد. عدم پیاده‌سازی این مورد باعث مکث کوتاهی در هنگام راه‌اندازی و سپس نمایش یک پیام هشدار می‌شود. در حال حاضر، هر دوی این‌ها را می‌توان با خاموش کردن فلگ ویژگی query-terminal <#featureflags> غیرفعال کرد.
n/a am شکستن نرم متن بر اساس پهنای صفحه نمایش (Soft wrap).
n/a xenl چاپ در آخرین ستون، مکان‌نما را به سطر بعدی منتقل نمی‌کند. با اجرای دستور printf %0"$COLUMNS"d 0; sleep 3 این مورد را بررسی کنید.

توالی TI توضیحات
\t it انتقال مکان‌نما به توقف تب بعدی (هر ۸ ستون یک‌بار). این مورد عمدتاً زمانی اهمیت دارد که خط فرمان (prompt) شما شامل تب باشد.
\e[m sgr0 غیرفعال کردن حالت‌های صفت برجسته (bold)، کم‌نور (dim)، مورب (italic)، زیرخط‌دار (underline)، خط‌خورده (strikethrough)، معکوس (reverse) و انتخاب رنگ‌های پیش‌فرض.
\e[1m bold ورود به حالت برجسته (bold).
\e[2m dim ورود به حالت کم‌نور (dim).
\e[3m sitm ورود به حالت مورب (italic).
\e[4m smul ورود به حالت زیرخط‌دار (underline).
\e[4:2m Su ورود به حالت دو زیرخط (double underline).
\e[4:3m Su ورود به حالت زیرخط موج‌دار (curly underline).
\e[4:4m Su ورود به حالت زیرخط نقطه‌چین (dotted underline).
\e[4:5m Su ورود به حالت زیرخط خط‌چین (dashed underline).
\e[7m rev ورود به حالت تصویر معکوس (جابجایی رنگ‌های پیش‌زمینه و پس‌زمینه).
\e[9m smxx ورود به حالت خط‌خورده (strikethrough).
\e[23m ritm خروج از حالت مورب (italic).
\e[24m rmul خروج از حالت زیرخط‌دار (underline).
\e[29m rmxx خروج از حالت خط‌خورده (strikethrough).
\e[38;5; Ps m setaf انتخاب رنگ پیش‌زمینهٔ Ps از پالت ۲۵۶ رنگی.
\e[48;5; Ps m setab انتخاب رنگ پس‌زمینهٔ Ps از پالت ۲۵۶ رنگی.
\e[58:5: Ps m (توجه: دونقطه به‌جای نقطه‌ویرگول) Su انتخاب رنگ زیرخط Ps از پالت ۲۵۶ رنگی.
\e[ Ps m setaf setab انتخاب رنگ پیش‌زمینه/پس‌زمینه. این دستور بر اساس محدوده‌ای که شامل پارامتر است، رنگی از پالت ۲۵۶ رنگی یادشده را استفاده می‌کند: 30-37 به پیش‌زمینهٔ 0-7 نگاشت می‌شود، 40-47 به پس‌زمینهٔ 0-7 نگاشت می‌شود، 90-97 به پیش‌زمینهٔ 8-15 نگاشت می‌شود و 100-107 به پس‌زمینهٔ 8-15 نگاشت می‌شود.
\e[38;2; Ps ; Ps ; Ps m انتخاب رنگ پیش‌زمینه از میان رنگ‌های ۲۴ بیتی RGB.
\e[48;2; Ps ; Ps ; Ps m انتخاب رنگ پس‌زمینه از میان رنگ‌های ۲۴ بیتی RGB.
\e[39m بازنشانی رنگ پیش‌زمینه به مقدار پیش‌فرض ترمینال.
\e[49m بازنشانی رنگ پس‌زمینه به مقدار پیش‌فرض ترمینال.
\e[58:2:: Ps : Ps : Ps m (توجه: دونقطه به‌جای نقطه‌ویرگول) Su انتخاب رنگ زیرخط از میان رنگ‌های ۲۴ بیتی RGB.
\e[59m Su بازنشانی رنگ زیرخط به مقدار پیش‌فرض (پیروی از رنگ پیش‌زمینه).
\e[ Ps S indn پیمایش محتوا (نه نما یا دیدگاه) به بالا به تعداد Ps سطر (در استاندارد ECMA-48 با عنوان SCROLL UP / SU و در terminfo با عنوان "scroll forward" نامیده می‌شود). هنگامی که fish پشتیبانی از این قابلیت را تشخیص دهد، status test-terminal-features scroll-content-up <#status-test-terminal-features> مقدار 0 را برمی‌گرداند، که امکان استفاده از کلید ترکیبی ctrl-l برای فراخوانی تابع ورودی ویژهٔ scrollback-push <#special-input-functions-scrollback-push> را فراهم می‌سازد.
\e[= Ps u, \e[? Ps u n/a فعال‌سازی پروتکل صفحه‌کلید kitty.
\e[6n n/a درخواست گزارش موقعیت مکان‌نما. پاسخ باید به فرم \e[ Ps ; Ps R باشد که در آن پارامتر نخست شمارهٔ سطر و پارامتر دوم شمارهٔ ستون است. شمارش هر دو از ۱ آغاز می‌شود. این توالی برای کوتاه کردن خودکار پیشنهادهای چندخطی در لبهٔ پایینی صفحه نمایش، توسط تابع ورودی ویژهٔ scrollback-push <#special-input-functions-scrollback-push> و در درون ترمینال‌هایی که قابلیت click_events در OSC 133 را پیاده‌سازی کرده‌اند، استفاده می‌شود.
\e[ \x20 q Se بازنشانی سبک مکان‌نما به مقدار پیش‌فرض ترمینال. این مورد در حال حاضر استفاده نمی‌شود اما ممکن است در آینده به کار گرفته شود.
\e[ Ps \x20 q Ss تنظیم سبک مکان‌نما (DECSCUSR)؛ مقدار Ps برای شکل‌های بلوکی، زیرخط یا خط عمودی برابر ۲، ۴ یا ۶ است.
\e[ Ps q n/a درخواست نام و نسخهٔ ترمینال (XTVERSION). این مورد صرفاً برای راهکارهای موقت سازگاری با ترمینال‌های ناسازگار استفاده می‌شود.
\e[?25h cvvis فعال‌سازی قابلیت رؤیت مکان‌نما (DECTCEM).
\e[?1004h n/a فعال‌سازی گزارش فوکوس (Focus Reporting).
\e[?1004l n/a غیرفعال‌سازی گزارش فوکوس.
\e[?1049h n/a فعال‌سازی بافر صفحهٔ جایگزین (Alternate screen buffer).
\e[?1049l n/a غیرفعال‌سازی بافر صفحهٔ جایگزین.
\e[?2004h فعال‌سازی چسباندن محصور (Bracketed paste).
\e[?2004l غیرفعال‌سازی چسباندن محصور.
\e[?2031h فعال‌سازی گزارش ناخواستهٔ تم رنگی https://contour-terminal.org/vt-extensions/color-palette-update-notifications. در صورت فعال بودن، ترمینال باید هر زمان که تم رنگی‌اش تغییر کرد، توالی \e[?997;1n یا \e[?997;2n را ارسال کند. این کار باعث می‌شود fish برای رنگ پس‌زمینه پرس‌وجو کند.
\e[?2031l غیرفعال‌سازی گزارش ناخواستهٔ تم رنگی.
\e]0; Pt \e\\ ts تنظیم عنوان پنجرهٔ ترمینال (OSC 0). در fish_title استفاده می‌شود.
\e]1; Pt \e\\ ts تنظیم عنوان تب ترمینال (OSC 1). در fish_tab_title استفاده می‌شود.
\e]7;file:// Pt / Pt \e\\ گزارش دایرکتوری کاری (OSC 7). از آنجا که ترمینال ممکن است روی سیستمی متفاوت از پوسته (از راه دور) اجرا شود، نام میزبان (پارامتر اول) localhost نخواهد بود.
\e]8;; Pt \e\\ ایجاد یک ابرپیوند (OSC 8) https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda. این مورد در صفحات راهنمای fish استفاده می‌شود.
\e]11;?\e\\ n/a پرس‌وجوی رنگ پس‌زمینه. یک پاسخ معتبر به فرم \e]11;rgb: Pt / Pt / Pt \e\\ یا \e]11;rgba: Pt / Pt / Pt / Pt\e\\ خواهد بود که در آن سه پارامتر اول هرکدام شامل یک تا چهار رقم هگزادسیمال هستند که مؤلفه‌های قرمز، آبی و سبز را نشان می‌دهند. این توالی برای مقداردهی fish_terminal_color_theme <#envvar-fish_terminal_color_theme> استفاده می‌شود، که برای انتخاب یک گونهٔ تم <#fish-config-theme-files> بهینه‌سازی‌شده برای تم رنگی ترمینال به کار می‌رود.
\e]52;c; Pt \e\\ کپی به کلیپ‌بورد (OSC 52). در fish_clipboard_copy استفاده می‌شود.
\e]133;A; click_events=1\e\\ علامت‌گذاری آغاز خط فرمان (OSC 133)، با افزونهٔ click_events ترمینال kitty. افزونهٔ click_events با فرض در دسترس بودن گزارش موقعیت مکان‌نما، کلیک‌های ماوس را قادر می‌سازد مکان‌نما را جابه‌جا کرده یا آیتم‌های صفحه‌بند (pager) را انتخاب کنند.
\e]133;B\e\\ علامت‌گذاری پایان خط فرمان (OSC 133).
\e]133;C; cmdline_url= Pt \e\\ علامت‌گذاری آغاز دستور (OSC 133)، با افزونهٔ cmdline_url ترمینال kitty که پارامتر آن خط فرمان کدگذاری‌شده به‌صورت URL است.
\e]133;D; Ps \e\\ علامت‌گذاری پایان دستور (OSC 133)؛ پارامتر Ps وضعیت خروج است.
\eP+q Pt \e\\ درخواست قابلیت terminfo (XTGETTCAP). پارامتر آن کد terminfo کدگذاری‌شده به‌صورت هگزادسیمالِ قابلیت مورد نظر است. پاسخ باید به فرم \eP1+q Pt \e\\ ("boolean") یا \eP1+q Pt = Pt \e\\ ("string") باشد. در هر دو حالت، پارامتر اول باید مشابه پارامتر درخواست باشد. پوستهٔ fish قابلیت‌های رشته‌ای زیر را استعلام می‌کند: • indn: پارامتر دوم پاسخ نادیده گرفته می‌شود. • query-os-name (برای status terminal-os <#status-terminal-os>): ترمینال‌هایی که روی یونیکس اجرا می‌شوند باید مقدار هگزادسیمالِ $(uname -s) را به‌عنوان پارامتر دوم بازگردانند.

تجزیهٔ DCS اختیاری است، زیرا fish قبل از چاپ هرگونه دستور DCS، موقتاً به بافر صفحهٔ جایگزین جابه‌جا می‌شود. با این حال، از آنجا که GNU screen به‌طور پیش‌فرض اجازهٔ روشن کردن بافر صفحهٔ جایگزین را نمی‌دهد، و همچنین با دستورات DCS به‌شکل سازگار رفتار نمی‌کند، خط فرمان اولیهٔ fish ممکن است با بار دادهٔ DCS مانند +q696e646e مخدوش شود. در حال حاضر، fish با بررسی وجود متغیر محیطی STY این مشکل را دور می‌زند. اگر این روش بنا به دلایلی کارساز نبود، می‌توانید این تنظیم را به ~/.screenrc خود اضافه کنید:

altscreen on

یا این قطعه کد را به config.fish خود بیفزایید:

function GNU-screen-workaround --on-event fish_prompt
    commandline -f repaint
    functions --erase GNU-screen-workaround
end

به‌طور پیش‌فرض، fish نویسه‌های غیر ASCII زیر را خروجی می‌دهد:

× ► ¶ ⏎ • ● … μ ’ ‘ “ ”

و همچنین تصاویر کنترلی (U+2400 تا U+241F)، و نویسه‌های خاص هر محلی (locale) در پیام‌های ترجمه‌شده <#variables-locale>.

توسعه‌دهندگان fish-shell

توسعه‌دهندگان fish-shell

fish(1)

September 7, 2026 4.9