kitten-hints(1) kitty kitten-hints(1)

kitten-hints - انتخاب متن از صفحه نمایش با صفحه‌کلید

ترمینال kitty دارای یک «حالت راهنما» (hints mode) است که امکان انتخاب قطعات متنی دلخواه نمایان روی صفحه و انجام عملیات روی آن‌ها را فراهم می‌کند. برای نمونه، می‌توانید کلیدهای ctrl+shift+e <#shortcut-kitty.Open-URL> را بفشارید تا هر نشانی اینترنتی (URL) نمایان روی صفحه را انتخاب کرده و آن را در مرورگر وب پیش‌فرض خود باز کنید.

حالت راهنمای URL (تصاویر پشتیبانی نمی‌شوند)

به همین ترتیب، می‌توانید کلیدهای ctrl+shift+p>f <#shortcut-kitty.Insert-selected-path> را فشار دهید تا هر متنی که شبیه به یک مسیر یا نام فایل است انتخاب شده و درون ترمینال درج گردد؛ این ویژگی برای انتخاب فایل‌ها از خروجی دستورات git یا ls و افزودن آن‌ها به خط فرمان برای دستور بعدی بسیار کاربردی است.

شما همچنین می‌توانید کلیدهای ctrl+shift+p>n <#shortcut-kitty.Open-the-selected-file-at-the-selected-line> را بفشارید تا هر متنی که شبیه به یک مسیر یا نام فایل همراه با دونقطه و شماره خط است انتخاب شود و فایل مربوطه در ویرایشگر پیش‌فرض شما در همان شماره خط باز شود (باز شدن در شماره خط تنها زمانی کار می‌کند که ویرایشگر شما از نحو خط فرمان +linenum پشتیبانی کند یا یک ویرایشگر شناخته‌شده باشد). الگوها و ویرایشگر مورد استفاده را می‌توان با گزینه‌های ارسالی به این kitten تغییر داد. برای مثال:

map ctrl+g kitten hints --type=linenum --linenum-action=tab nvim +{line} {path}

با فشردن کلیدهای Ctrl+G، فایل انتخاب‌شده را در یک برگه جدید درون Neovim https://neovim.io باز خواهد کرد.

فشردن کلیدهای ctrl+shift+p>y <#shortcut-kitty.Open-the-selected-hyperlink> موجب باز شدن ابرپیوندها (hyperlinks) <#term-hyperlinks> می‌شود؛ یعنی نشانی‌های اینترنتی که توسط برنامه در حال اجرا در ترمینال بدین صورت نشانه‌گذاری شده‌اند، مانند خروجی دستور ls --hyperlink=auto. اگر دستور ls همراه سیستم‌عامل شما از ابرپیوند پشتیبانی نمی‌کند، ممکن است نیاز به نصب GNU Coreutils https://www.gnu.org/software/coreutils داشته باشید.

شما همچنین می‌توانید تعیین کنید که برای انواع مختلف نشانی‌های اینترنتی چه اقداماتی انجام شود <>.

نکته:

اگر تعداد راهنماها از تعداد حروف الفبا بیشتر باشد، از چندین حرف ترکیبی استفاده خواهد شد. در این حالت، هنگامی که نخستین حرف را می‌فشارید، فقط راهنماهایی که با آن حرف آغاز می‌شوند نمایش می‌یابند. با فشردن حرف دوم، آن راهنما انتخاب می‌شود، یا با فشردن Enter یا Space می‌توانید راهنمای خالی را انتخاب کنید.

برای علاقه‌مندان به ماوس، برنامه hints kitten به شما امکان می‌دهد به‌جای تایپ نویسه راهنما، روی متن منطبق کلیک کنید تا انتخاب شود.

برنامه hints kitten بسیار قدرتمند است؛ برای مشاهده راهنمای تفصیلی درباره گزینه‌های گوناگون و حالت‌های عملکرد آن، بخش‌های زیر را مطالعه کنید. می‌توانید از این گزینه‌ها برای ایجاد کلیدهای میانبر در kitty.conf جهت انتخاب انواع مختلف قطعات متنی استفاده نمایید. برای نمونه‌ها به insert_selected_path <#shortcut-kitty.Insert-selected-path> مراجعه کنید.

برنامه hints kitten از نگارش اسکریپت‌های ساده پایتون پشتیبانی می‌کند که می‌توان از آن‌ها برای سفارشی‌سازی کامل شیوه یافتن موارد منطبق و نحوه واکنش پس از انتخاب آن‌ها استفاده کرد. این کار به hints kitten اجازه می‌دهد تا رابط کاربری را ارائه دهد، در حالی که شما منطق مربوط به یافتن موارد منطبق و انجام اقدام روی آن‌ها را تعیین می‌کنید. این موضوع با یک مثال به بهترین شکل نشان داده می‌شود. فایلی به نام custom-hints.py در پوشه پیکربندی kitty <#confloc> با محتویات زیر ایجاد کنید:

import re
def mark(text, args, Mark, extra_cli_args, *a):
    # این تابع مسئول یافتن تمام متن‌های منطبق است
    # extra_cli_args آرگومان‌های اضافی ارسالی در خط فرمان هنگام فراخوانی kitten هستند
    # تمام کلمات منفرد را برای انتخاب احتمالی علامت‌گذاری می‌کنیم
    for idx, m in enumerate(re.finditer(r'\w+', text)):
        start, end = m.span()
        mark_text = text[start:end].replace('\n', '').replace('\0', '')
        # دیکشنری خالی زیر به صورت groupdicts در handle_result() در دسترس خواهد بود
        # و می‌تواند شامل کلیدهای رشته‌ای و مقادیر قابل سریال‌سازی JSON باشد
        yield Mark(idx, start, end, mark_text, {})
def handle_result(args, data, target_window_id, boss, extra_cli_args, *a):
    # این تابع مسئول انجام اقدام روی متن انتخاب‌شده است
    # matches فهرستی از ورودی‌های انتخاب‌شده است و groupdicts داده‌های
    # مرتبط با هر ورودی در تابع mark() بالا را در بر دارد
    matches, groupdicts = [], []
    for m, g in zip(data['match'], data['groupdicts']):
        if m:
            matches.append(m), groupdicts.append(g)
    for word, match_data in zip(matches, groupdicts):
        # جستجوی کلمه در واژه‌نامه، تابع open_url نشانی داده‌شده را
        # در مرورگر سیستم باز می‌کند
        boss.open_url(f'https://www.google.com/search?q=define:{word}')

سپس kitty را با دستور زیر اجرا کنید:

kitty -o 'map f1 kitten hints --customize-processing custom-hints.py'

هنگامی که کلید F1 را فشار می‌دهید، می‌توانید کلمه‌ای را انتخاب کرده تا در واژه‌نامه گوگل جستجو شود.

کد منبع این kitten در گیت‌هاب موجود است https://github.com/kovidgoyal/kitty/tree/master/kittens/hints.

kitten hints [options]

انتخاب متن از صفحه نمایش با استفاده از صفحه‌کلید. به طور پیش‌فرض برای یافتن نشانی‌های اینترنتی (URL) جستجو می‌کند.

برنامه‌ای که برای باز کردن متن منطبق استفاده می‌شود. به طور پیش‌فرض بر اساس برنامه پیش‌فرض سیستم‌عامل عمل می‌کند. مقادیر ویژه متعددی پشتیبانی می‌شوند:
-
چسباندن متن منطبق در پنجره ترمینال.
@
رونوشت متن منطبق به کلیپ‌بورد.
*
رونوشت متن منطبق به بخش گزینش اولیه (primary selection، در سیستم‌هایی که از آن پشتیبانی می‌کنند).
@NAME
رونوشت متن منطبق به بافر مشخص‌شده، مانند @a
اجرای برنامه پیش‌فرض بازگشایی. توجه داشته باشید هنگام استفاده از --type با مقدار hyperlink، مقدار پیش‌فرض استفاده از قابلیت‌های مدیریت هایپرلینک کیتی <> است.
اجرای دستور launch <> برای باز کردن برنامه در یک برگه، پنجره یا لایه رویی جدید در کیتی. برای مثال:
--program "launch --type=tab vim"

می‌تواند چندین بار برای اجرای چند برنامه مشخص شود.

نوع متن برای جستجو. مقدار linenum ویژه است؛ این گزینه با استفاده از الگوی مشخص‌شده در --regex که باید شامل گروه‌های نام‌گذاری‌شده path و line باشد، به دنبال پیام‌های خطا می‌گردد. در صورت عدم تعیین، به دنبال path:line خواهد گشت. گزینه --linenum-action تعیین می‌کند پیام خطای انتخاب‌شده کجا نمایش یابد؛ سایر گزینه‌ها نادیده گرفته می‌شوند. پیش‌فرض: url انتخاب‌ها: hash, hyperlink, ip, line, linenum, path, regex, url, word
عبارت باقاعده (Regex) مورد استفاده زمانی که گزینه --type روی regex تنظیم شده باشد، با نحو پرل ۵ (Perl 5). اگر یک گروه شماره‌گذاری‌شده در عبارت باقاعده مشخص کنید، تنها همان گروه تطبیق داده خواهد شد. این ویژگی امکان تطبیق متن با نادیده‌گرفتن پیشوند/پسوند را در صورت نیاز فراهم می‌کند. عبارت پیش‌فرض کل سطرها را مطابقت می‌دهد. برای تطبیق متن روی چند سطر، پایان خط‌ها دنباله‌ای از صفر یا چند بایت null به همراه یک بازگشت به سر سطر (CR) یا خط جدید (LF) هستند؛ برای تطبیق روی پایان خطوط باید دسته کاراکتری [\0\r\n] را تطبیق دهید. خطوط جدید و بایت‌های null به طور خودکار از متن استخراج‌شده حذف می‌شوند. اگر گروه‌های نام‌گذاری‌شده و یک --program را مشخص کنید، آرگومان‌هایی متناظر با هر گروه نام‌گذاری‌شده در قالب key=value به برنامه ارسال خواهند شد. پیش‌فرض: (?m)^\s*(.+?)\s*$
محل انجام اقدام روی خطاهای منطبق. مقدار self پنجره جاری، window یک پنجره جدید kitty، tab یک برگه جدید، os_window یک پنجره جدید سیستم‌عامل و background اجرای دستور در پس‌زمینه است. مقدار remote-control شبیه به پس‌زمینه عمل می‌کند اما برنامه می‌تواند بدون نیاز به فعال‌سازی سراسری کنترل از راه دور، از کنترل از راه دور kitty استفاده کند. اقدام واقعی همان آرگومان‌های ارائه‌شده به kitten است؛ برای مثال: kitten hints --type=linenum --linenum-action=tab vim +{line} {path} مسیر منطبق را در شماره خط مربوطه در برنامه vim درون یک برگه جدید باز می‌کند. توجه کنید برای استفاده از --program جهت کپی یا پیست آرگومان‌های ارائه‌شده، باید از مقدار ویژه self استفاده نمایید. پیش‌فرض: self انتخاب‌ها: background, os_window, remote-control, self, tab, window
فهرست پیشوندهای شناخته‌شده نشانی‌های اینترنتی جدا شده با کاما. پیش‌فرض آن فهرستی از پیشوندها است که با گزینه url_prefixes <#opt-kitty.url_prefixes> در kitty.conf تعریف شده است. پیش‌فرض: default
نویسه‌هایی که هنگام تطبیق URLها باید نادیده گرفته شوند. به طور پیش‌فرض همان فهرست کاراکترهای مشخص‌شده در گزینه url_excluded_characters <#opt-kitty.url_excluded_characters> در kitty.conf است. نحو این گزینه دقیقاً مشابه url_excluded_characters <#opt-kitty.url_excluded_characters> است. پیش‌فرض: default
نویسه‌هایی که بخشی از یک کلمه در نظر گرفته می‌شوند. علاوه بر این، تمامی نویسه‌هایی که در پایگاه داده یونیکد الفبانمایی (alphanumeric) علامت‌گذاری شده‌اند به عنوان نویسه کلمه تلقی خواهند شد. پیش‌فرض از گزینه select_by_word_characters <#opt-kitty.select_by_word_characters> در kitty.conf استفاده می‌کند.
حداقل تعداد نویسه‌ها برای اینکه یک تطابق به حساب آید. پیش‌فرض: 3
انتخاب چند مورد منطبق و انجام اقدام روی تمامی آن‌ها به صورت همزمان در پایان. در این حالت، برای اتمام انتخاب کلید Esc را فشار دهید.
رشته الحاق‌کننده برای پیوند دادن چندین مورد انتخاب‌شده هنگام رونوشت به کلیپ‌بورد یا درج در ترمینال. مقادیر ویژه عبارتند از: space - یک نویسه فاصله، newline - یک خط جدید، empty - الحاق‌کننده خالی، json - یک فهرست سریال‌سازی‌شده در قالب JSON، و auto - انتخاب خودکار بر اساس نوع متن انتخاب‌شده. علاوه بر این، اعداد صحیح به عنوان نمایه‌های مبتنی بر صفر در فهرست موارد انتخاب‌شده تفسیر می‌شوند. می‌توانید از 0 برای اولین مورد و -1 برای آخرین مورد استفاده کنید. پیش‌فرض: auto
افزودن فاصله پایانی پس از متن منطبق. پیش‌فرض روی auto است که در صورت استفاده همراه با --multiple فاصله اضافه می‌کند. پیش‌فرض: auto انتخاب‌ها: always, auto, never
میزان آفست (از صفر) که شماره‌گذاری راهنماها از آن آغاز می‌شود. توجه داشته باشید فقط اعداد بزرگتر یا مساوی صفر لحاظ می‌گردند. پیش‌فرض: 1
تولید برچسب‌های راهنما به گونه‌ای که هیچ راهنمایی پیشوند راهنمای دیگر نباشد. برای نمونه، با الفبای "abc" و ۴ تطابق، راهنماها "b"، "c"، "aa"، "ab" خواهند بود به‌جای "a"، "b"، "c"، "aa" (که در آن "a" پیشوند "aa" است). این کار با اعمال یک آفست پویا به اندازه کافی بزرگ انجام می‌شود تا راهنماها بدون پیشوند تکراری باشند. هنگام ترکیب با --hints-offset بزرگتر از ۰، آفست موثر هرکدام که بزرگتر باشد در نظر گرفته خواهد شد.
فهرست نویسه‌های مورد استفاده برای برچسب‌های راهنما. حالت پیش‌فرض استفاده از ارقام و حروف کوچک انگلیسی است. ترجیح خود را به عنوان رشته‌ای از کاراکترها مشخص کنید. توجه داشته باشید که برای استفاده از نخستین نویسه برای هایلایت اولین تطابق، باید --hints-offset را صفر تعیین کنید، در غیر این صورت به طور پیش‌فرض از نویسه دوم آغاز خواهد شد.
افزایش صعودی راهنماها از بالا به پایین، به‌جای کاهش نزولی از بالا به پایین.
رنگ پیش‌زمینه برای برچسب‌های راهنما. می‌توانید از نام‌های رنگ یا مقادیر هگز استفاده کنید. برای هشت رنگ نام‌گذاری‌شده اصلی ترمینال می‌توانید از پیشوند bright- نیز برای دریافت گونه روشن‌تر رنگ استفاده کنید. پیش‌فرض: black
رنگ پس‌زمینه برای برچسب‌های راهنما. می‌توانید از نام‌های رنگ یا مقادیر هگز استفاده نمایید. برای هشت رنگ نام‌گذاری‌شده اصلی ترمینال می‌توانید از پیشوند bright- برای دریافت گونه روشن‌تر رنگ استفاده کنید. پیش‌فرض: green
رنگ پیش‌زمینه برای متنی که توسط راهنماها به آن اشاره شده است (به استثنای خود برچسب راهنما). می‌توانید از نام‌های رنگ یا مقادیر هگز استفاده کنید. برای هشت رنگ اصلی ترمینال می‌توانید از پیشوند bright- برای نوع روشن استفاده کنید. حالت پیش‌فرض گزینش خودکار یک رنگ مناسب است. پیش‌فرض: auto
رنگ پس‌زمینه برای متنی که توسط راهنماها به آن اشاره شده است (به استثنای برچسب راهنما). می‌توانید از نام‌های رنگ یا مقادیر هگز استفاده نمایید. برای هشت رنگ اصلی ترمینال می‌توانید از پیشوند bright- برای گونه روشن استفاده کنید. حالت پیش‌فرض انتخاب رنگ مناسب به صورت خودکار است. پیش‌فرض: auto
نام یک فایل پایتون در دایرکتوری پیکربندی kitty که برای ارائه پیاده‌سازی‌های سفارشی جهت الگویابی و انجام اقدامات روی موارد منطبقِ انتخاب‌شده ایمپورت می‌شود. همچنین می‌توانید مسیرهای مطلق را برای بارگذاری اسکریپت از سایر مسیرها مشخص کنید. برای جزئیات به https://sw.kovidgoyal.net/kitty/kittens/hints مراجعه فرمایید.
عنوان پنجره راهنما؛ عنوان پیش‌فرض بر اساس نوع متن در حال راهنمایی تعیین می‌شود.

نکته:

برای جلوگیری از لزوم تعیین مکرر گزینه‌های یکسان خط فرمان در هر فراخوانی، می‌توانید از گزینه action_alias <#opt-kitty.action_alias> در فایل kitty.conf استفاده کرده و نام‌های مستعاری دارای مجموعه‌ای مشترک از گزینه‌ها بسازید. برای نمونه:
action_alias myhints kitten hints --alphabet qfjdkslaureitywovmcxzpq1234567890
map f1 myhints --customize-processing custom-hints.py

Kovid Goyal

2026, Kovid Goyal

July 30, 2026 0.48.2