kitten-diff(1) kitty kitten-diff(1) نام (NAME) kitten-diff - ابزار مقایسه بصری و نمایش تفاوت فایل‌ها و تصاویر در ترمینال Kitty ابزاری سریع برای مقایسه دوبه‌دوی فایل‌ها با برجسته‌سازی نحو و پشتیبانی از تصاویر ویژگی‌های اصلی (MAJOR FEATURES) • نمایش تفاوت‌ها به‌صورت کنار هم (side-by-side) در ترمینال kitty • برجسته‌سازی غیرهمگام نحو (syntax highlighting) تفاوت‌های نمایش‌داده‌شده برای دستیابی به حداکثر سرعت • نمایش تفاوت تصاویر در کنار تفاوت‌های متنی، حتی از طریق نشست SSH • پشتیبانی از مقایسه بازگشتی دایرکتوری‌ها تصویر صفحه، نمایش یک نمونه مقایسه (تصاویر در این فرمت پشتیبانی نمی‌شوند) نصب (INSTALLATION) کافی است kitty را نصب کنید <#quickstart>. نحوه استفاده (USAGE) در ترمینال kitty دستور زیر را اجرا کنید: kitten diff file1 file2 تا تفاوت میان file1 و file2 را مشاهده کنید. برای کوتاه‌تر شدن دستور می‌توانید یک نام مستعار (alias) در فایل راه‌انداز پوسته خود بسازید، برای نمونه: alias d="kitten diff" اکنون برای مقایسه دو فایل کافی است دستور زیر را اجرا کنید: d file1 file2 همچنین می‌توانید به‌جای فایل‌ها، دایرکتوری‌ها را مشخص کنید تا تفاوت محتویات دایرکتوری‌ها به‌صورت بازگشتی نمایش داده شود. کنترل‌های صفحه‌کلید (KEYBOARD CONTROLS) ┌─────────────────────────┬─────────────────────┐ │عملیات │ میان‌بر │ ├─────────────────────────┼─────────────────────┤ │خروج │ Q │ ├─────────────────────────┼─────────────────────┤ │پیمایش یک خط به بالا │ K, Up │ ├─────────────────────────┼─────────────────────┤ │پیمایش یک خط به پایین │ J, Down │ ├─────────────────────────┼─────────────────────┤ │پیمایش یک صفحه به بالا │ PgUp │ ├─────────────────────────┼─────────────────────┤ │پیمایش یک صفحه به پایین │ PgDn │ ├─────────────────────────┼─────────────────────┤ │پیمایش به ابتدا │ Home │ ├─────────────────────────┼─────────────────────┤ │پیمایش به انتها │ End │ ├─────────────────────────┼─────────────────────┤ │پیمایش به صفحه بعد │ Space, PgDn, Ctrl+F │ ├─────────────────────────┼─────────────────────┤ │پیمایش به صفحه قبل │ PgUp, Ctrl+B │ ├─────────────────────────┼─────────────────────┤ │پیمایش نیم صفحه به پایین │ Ctrl+D │ ├─────────────────────────┼─────────────────────┤ │پیمایش نیم صفحه به بالا │ Ctrl+U │ ├─────────────────────────┼─────────────────────┤ │پیمایش به تغییر بعدی │ N │ ├─────────────────────────┼─────────────────────┤ │پیمایش به تغییر قبلی │ P │ ├─────────────────────────┼─────────────────────┤ │افزایش خطوط زمینه │ + │ ├─────────────────────────┼─────────────────────┤ │کاهش خطوط زمینه │ - │ ├─────────────────────────┼─────────────────────┤ │نمایش تمام خطوط زمینه │ A │ ├─────────────────────────┼─────────────────────┤ │بازگردانی زمینه پیش‌فرض │ = │ ├─────────────────────────┼─────────────────────┤ │جست‌وجو به جلو │ / │ ├─────────────────────────┼─────────────────────┤ │جست‌وجو به عقب │ ? │ ├─────────────────────────┼─────────────────────┤ │پاک‌سازی جست‌وجو یا خروج │ Esc │ ├─────────────────────────┼─────────────────────┤ │پیمایش به تطابق بعدی │ >, . │ ├─────────────────────────┼─────────────────────┤ │پیمایش به تطابق قبلی │ <, , │ ├─────────────────────────┼─────────────────────┤ │کپی انتخاب به کلیپ‌بورد │ y │ ├─────────────────────────┼─────────────────────┤ │کپی انتخاب یا خروج │ Ctrl+C │ └─────────────────────────┴─────────────────────┘ یکپارچه‌سازی با گیت (INTEGRATING WITH GIT) عبارت زیر را به فایل ~/.gitconfig اضافه کنید: [diff] tool = kitty guitool = kitty.gui [difftool] prompt = false trustExitCode = true [difftool "kitty"] cmd = kitten diff $LOCAL $REMOTE [difftool "kitty.gui"] cmd = kitten diff $LOCAL $REMOTE اکنون برای استفاده از kitty-diff جهت مشاهده تفاوت‌های گیت، کافی است دستور زیر را اجرا کنید: git difftool --no-symlinks --dir-diff مجدداً، ساخت یک نام مستعار برای این دستور نیز مفید خواهد بود. چرا این ابزار فقط در کیتی کار می‌کند؟ (WHY DOES THIS WORK ONLY IN KITTY?) ابزار diff kitten از قابلیت‌های متعددی استفاده می‌کند که منحصراً در kitty وجود دارند <>، مانند پروتکل گرافیکی kitty <>، پروتکل صفحه‌کلید توسعه‌یافته <> و غیره. همچنین از زیرساخت برنامه‌های ترمینالی که برای سایر kittenهای ترمینال kitty ایجاد شده بهره می‌برد تا میزان کد مورد نیاز کاهش یابد (کل پیاده‌سازی زیر ۳۰۰۰ خط کد است). و از نظر بنیادی، این ابزار تنها برای kitty است چون من آن را برای خودم نوشتم و بسیار نامحتمل است که از ترمینال دیگری استفاده کنم :) پیکربندی (CONFIGURATION) می‌توانید رنگ‌های مورداستفاده، میان‌برهای صفحه‌کلید، پیاده‌سازی مقایسه، خطوط پیش‌فرض زمینه و موارد دیگر را با ایجاد یک فایل diff.conf در پوشه پیکربندی kitty خود <#confloc> سفارشی کنید. برای دیدن دستورالعمل‌های پیکربندی پشتیبانی‌شده به بخش‌های زیر مراجعه کنید. مقایسه (DIFFING) syntax_aliases syntax_aliases pyj:py pyi:py recipe:py نام‌های مستعار پسوند فایل برای برجسته‌سازی نحو. برای نمونه، جهت برجسته‌سازی نحو file.xyz مانند file.abc از تنظیم xyz:abc استفاده کنید. نام‌های مستعار متعدد باید با فاصله از یکدیگر جدا شوند. num_context_lines num_context_lines 3 تعداد خطوط زمینه که در اطراف هر تغییر نمایش داده می‌شوند. diff_cmd diff_cmd auto دستور مقایسه‌ای که باید استفاده شود. باید شامل جای‌نگهدار _CONTEXT_ باشد که با تعداد خطوط زمینه جایگزین خواهد شد. چند مقدار ویژه مجاز هستند: auto به‌طور خودکار یک پیاده‌سازی مقایسه در دسترس را انتخاب می‌کند. builtin از الگوریتم مقایسه مهارشده (anchored diff) از کتابخانه استاندارد Go استفاده می‌کند. git از دستور git برای انجام مقایسه استفاده خواهد کرد. diff از دستور diff برای انجام مقایسه بهره می‌برد. replace_tab_by replace_tab_by \x20\x20\x20\x20 رشته‌ای که باید جایگزین تب‌ها شود. پیش‌فرض استفاده از چهار فاصله است. ignore_name یک الگوی glob که تنها با نام فایل‌ها و دایرکتوری‌ها مطابقت داده می‌شود. فایل‌ها و دایرکتوری‌های منطبق هنگام پیمایش فایل‌سیستم برای یافتن فایل‌های مقایسه نادیده گرفته می‌شوند. می‌تواند چندین بار برای استفاده از الگوهای متعدد مشخص شود. برای نمونه: ignore_name .git ignore_name *~ ignore_name *.pyc mark_moved_lines mark_moved_lines yes خطوطی که جابه‌جا شده‌اند (یعنی از سمت چپ حذف شده و در سمت راست با تفاوت اضافه شده‌اند) را با رنگ moved_bg برجسته می‌کند. word_diff_mode word_diff_mode words الگوریتم مورداستفاده برای برجسته‌سازی بخش‌هایی از خطوط تغییریافته که با هم تفاوت دارند. هنگامی که روی words تنظیم شود، کلمات تغییریافته در هر خط مشخص می‌شوند. هنگامی که روی central تنظیم شود، ناحیه مرکزی تغییریافته در هر خط در سطح بایت برجسته می‌شود. حالت words معمولاً کاربردی‌تر است چرا که دقیقاً نشان می‌دهد کدام کلمات تغییر کرده‌اند. توجه داشته باشید که حالت words تنها زمانی اعمال می‌شود که یک بخش تغییریافته (chunk) دارای تعداد برابری از خطوط اضافه‌شده و حذف‌شده باشد. word_regex word_regex [^\s\p{P}]+ عبارت باقاعده (regex) مورداستفاده برای تعریف یک کلمه هنگامی که word_diff_mode روی words تنظیم شده است. مقدار پیش‌فرض با هر توالی از نویسه‌های غیرفاصله‌ای و غیرنشانه‌گذاری مطابقت دارد. این عبارت باید یک عبارت باقاعده معتبر Go باشد. در صورت ارائه عبارت نامعتبر، diff با خطا متوقف خواهد شد. sticky_header sticky_header yes هنگامی که به پایین‌تر از هدر یک فایل پیمایش می‌کنید، نام فایل و جداکننده را در بالای صفحه سنجاق‌شده نگه می‌دارد. رنگ‌ها (COLORS) color_scheme color_scheme auto انتخاب استفاده از رنگ‌های روشن یا تیره. مقدار پیش‌فرض auto به معنای پیروی از طرح رنگ ترمینال والد است. توجه داشته باشید که رنگ‌های واقعی مورداستفاده برای طرح‌های تیره با تنظیمات dark_* در زیر تعیین می‌شوند و تنظیمات بدون پیشوند برای رنگ‌های روشن استفاده می‌شوند. pygments_style pygments_style default طرح رنگ pygments مورداستفاده برای برجسته‌سازی نحو. برای فهرستی از طرح‌ها به سبک‌های داخلی pygments مراجعه کنید. توجه داشته باشید که این گزینه رنگ‌های مورداستفاده برای مقایسه را تغییر نمی‌دهد، بلکه فقط رنگ‌های برجسته‌سازی نحو را تغییر می‌دهد. برای تغییر رنگ‌های عمومی از تنظیمات زیر استفاده کنید. این گزینه رنگ‌های مورداستفاده برای طرح‌های رنگی روشن را تعیین می‌کند؛ از dark_pygments_style برای تغییر رنگ‌های طرح‌های تیره استفاده کنید. dark_pygments_style dark_pygments_style github-dark طرح رنگ pygments مورداستفاده برای برجسته‌سازی نحو با رنگ‌های تیره. برای فهرستی از طرح‌ها به سبک‌های داخلی pygments مراجعه کنید. توجه داشته باشید که این گزینه رنگ‌های مورداستفاده برای مقایسه را تغییر نمی‌دهد، بلکه فقط رنگ‌های برجسته‌سازی نحو را تغییر می‌دهد. برای تغییر رنگ‌های عمومی از تنظیمات زیر استفاده کنید. این گزینه رنگ‌های مورداستفاده برای طرح‌های رنگی تیره را تعیین می‌کند؛ از pygments_style برای تغییر رنگ‌های طرح‌های روشن استفاده کنید. foreground, dark_foreground, background, dark_background foreground black dark_foreground #f8f8f2 background white dark_background #212830 رنگ‌های پایه title_fg, dark_title_fg, title_bg, dark_title_bg title_fg black dark_title_fg white title_bg white dark_title_bg #212830 رنگ‌های عنوان margin_bg, dark_margin_bg, margin_fg, dark_margin_fg margin_bg #fafbfc dark_margin_bg #212830 margin_fg #aaaaaa dark_margin_fg #aaaaaa رنگ‌های حاشیه removed_bg, dark_removed_bg, highlight_removed_bg, dark_highlight_removed_bg, removed_margin_bg, dark_removed_margin_bg removed_bg #ffeef0 dark_removed_bg #352c33 highlight_removed_bg #fdb8c0 dark_highlight_removed_bg #5c3539 removed_margin_bg #ffdce0 dark_removed_margin_bg #5c3539 پس‌زمینه متن‌های حذف‌شده added_bg, dark_added_bg, highlight_added_bg, dark_highlight_added_bg, added_margin_bg, dark_added_margin_bg added_bg #e6ffed dark_added_bg #263834 highlight_added_bg #acf2bd dark_highlight_added_bg #31503d added_margin_bg #cdffd8 dark_added_margin_bg #31503d پس‌زمینه متن‌های اضافه‌شده moved_bg, dark_moved_bg, moved_margin_bg, dark_moved_margin_bg moved_bg #fffde7 dark_moved_bg #003333 moved_margin_bg #fff3b0 dark_moved_margin_bg #00495b پس‌زمینه متن‌های جابه‌جاشده (همان متنی که در یک مکان حذف شده و در مکانی دیگر اضافه شده است) filler_bg, dark_filler_bg filler_bg #fafbfc dark_filler_bg #262c36 پس‌زمینه خط پرکننده (خالی) margin_filler_bg, dark_margin_filler_bg margin_filler_bg none dark_margin_filler_bg none پس‌زمینه خط پرکننده (خالی) در حاشیه‌ها؛ پیش‌فرض همان پس‌زمینه پرکننده است hunk_margin_bg, dark_hunk_margin_bg, hunk_bg, dark_hunk_bg hunk_margin_bg #dbedff dark_hunk_margin_bg #0c2d6b hunk_bg #f1f8ff dark_hunk_bg #253142 رنگ‌های هدر قطعه تغییر (hunk) search_bg, dark_search_bg, search_fg, dark_search_fg, select_bg, dark_select_bg, select_fg, dark_select_fg search_bg #444 dark_search_bg #2c599c search_fg white dark_search_fg white select_bg #b4d5fe dark_select_bg #2c599c select_fg black dark_select_fg white برجسته‌سازی کلیدهای میان‌بر (KEYBOARD SHORTCUTS) خروج map --allow-fallback=shifted,ascii q quit map esc quit پیمایش به پایین map --allow-fallback=shifted,ascii j scroll_by 1 map down scroll_by 1 پیمایش به بالا map --allow-fallback=shifted,ascii k scroll_by -1 map up scroll_by -1 پیمایش به ابتدا map home scroll_to start پیمایش به انتها map end scroll_to end پیمایش به صفحه بعد map page_down scroll_to next-page map space scroll_to next-page map --allow-fallback=shifted,ascii ctrl+f scroll_to next-page پیمایش به صفحه قبل map page_up scroll_to prev-page map --allow-fallback=shifted,ascii ctrl+b scroll_to prev-page پیمایش نیم صفحه به پایین map --allow-fallback=shifted,ascii ctrl+d scroll_to next-half-page پیمایش نیم صفحه به بالا map --allow-fallback=shifted,ascii ctrl+u scroll_to prev-half-page پیمایش به تغییر بعدی map --allow-fallback=shifted,ascii n scroll_to next-change پیمایش به تغییر قبلی map --allow-fallback=shifted,ascii p scroll_to prev-change پیمایش به فایل بعدی map --allow-fallback=shifted,ascii shift+j scroll_to next-file پیمایش به فایل قبلی map --allow-fallback=shifted,ascii shift+k scroll_to prev-file نمایش تمام زمینه map --allow-fallback=shifted,ascii a change_context all نمایش زمینه پیش‌فرض map = change_context default افزایش زمینه map + change_context 5 کاهش زمینه map - change_context -5 جست‌وجو به جلو map / start_search regex forward جست‌وجو به عقب map ? start_search regex backward پیمایش به تطابق جست‌وجوی بعدی map . scroll_to next-match map > scroll_to next-match پیمایش به تطابق جست‌وجوی قبلی map , scroll_to prev-match map < scroll_to prev-match جست‌وجو به جلو (بدون regex) map --allow-fallback=shifted,ascii f start_search substring forward جست‌وجو به عقب (بدون regex) map --allow-fallback=shifted,ascii b start_search substring backward کپی انتخاب به کلیپ‌بورد map --allow-fallback=shifted,ascii y copy_to_clipboard کپی انتخاب به کلیپ‌بورد یا خروج در صورت نبود انتخاب map --allow-fallback=shifted,ascii ctrl+c copy_to_clipboard_or_exit کد منبع ابزار مقایسه (SOURCE CODE FOR DIFF) کد منبع این kitten در گیت‌هاب موجود است . رابط خط فرمان (COMMAND LINE INTERFACE) kitten diff [options] file_or_directory_left file_or_directory_right نمایش تفاوت دوبه‌دوی فایل‌ها/دایرکتوری‌های مشخص‌شده. همچنین می‌توانید از ساختار ssh:hostname:remote-file-path برای مقایسه فایل‌های راه دور استفاده کنید. گزینه‌ها (OPTIONS) --context تعداد خطوط زمینه برای نمایش میان تغییرات. مقادیر منفی از تعداد تعیین‌شده در diff.conf استفاده می‌کنند. پیش‌فرض: -1 --config مسیر فایل(های) پیکربندی مورداستفاده را مشخص می‌کند. تمام فایل‌های پیکربندی با diff.conf داخلی ادغام می‌شوند و مقادیر داخلی را بازنویسی می‌کنند. این گزینه می‌تواند چندین بار برای خواندن پیاپی چندین فایل پیکربندی مشخص شود که همگی با هم ادغام خواهند شد. برای بارگذاری نکردن هیچ فایل پیکربندی از مقدار ویژه NONE استفاده کنید. اگر این گزینه مشخص نشود، فایل‌های پیکربندی به این ترتیب جست‌وجو می‌شوند: $XDG_CONFIG_HOME/kitty/diff.conf، ~/.config/kitty/diff.conf، $XDG_CONFIG_DIRS/kitty/diff.conf. نخستین فایلی که وجود داشته باشد به عنوان فایل پیکربندی استفاده می‌شود. اگر متغیر محیطی KITTY_CONFIG_DIRECTORY <#envvar- KITTY_CONFIG_DIRECTORY> تعیین شده باشد، همواره از آن دایرکتوری استفاده می‌شود و جست‌وجوی فوق انجام نخواهد گرفت. اگر /etc/xdg/kitty/diff.conf وجود داشته باشد، پیش از هر فایل پیکربندی کاربری ادغام می‌شود (یعنی با اولویت کمتر). این فایل می‌تواند برای تعیین مقادیر پیش‌فرض سرتاسری سیستم برای همه کاربران استفاده شود. همچنین می‌توانید از - یا /dev/stdin برای خواندن پیکربندی از STDIN استفاده کنید. --override , -o بازنویسی گزینه‌های پیکربندی منفرد؛ می‌تواند چندین بار مشخص شود. ساختار: name=value. برای نمونه: -o background=gray نمونه diff.conf (SAMPLE DIFF.CONF) می‌توانید یک فایل نمونه diff.conf با تمام تنظیمات پیش‌فرض و توضیحات مربوط به هر تنظیم را با کلیک روی sample diff.conf دانلود کنید. نویسنده (AUTHOR) Kovid Goyal حق نشر (COPYRIGHT) 2026, Kovid Goyal 0.48.2 July 30, 2026 kitten-diff(1)