معرفی TTT؛ ادیتور متنی خفن برای ترمینال که شبیه VS Code است!

احتمالاً شما هم مثل خیلی از برنامهنویسها وقت زیادی رو توی Terminal میگذرونید؛ از نوشتن اسکریپتها گرفته تا ادیت کردن فایلهای کانفیگ و مدیریت سرورهای ریموت. اما راستش رو بخواهید، وقتی یه پروژه یه کم پیچیده میشه، دست به دامن ادیتورهای گرافیکی مثل Zed میشیم. دلیلشم واضحه؛ ابزارهایی مثل Vim و Neovim فوقالعادهان، اما یاد گرفتن و سر و کله زدن باهاشون اونقدر درگیرکننده هست که خیلیها حوصلهشون سر میره و ترجیح میدن بیخیالشن.
نیازهای من برای ادیت کردن کدها کاملاً سادهست و ساعتها وقت گذاشتن برای یادگیری کلیدهای میانبر عجیبوغریب، کانفیگ کردن پلاکلاگینها و ساختن یه workflow از صفر، اصلاً ارزشش رو نداره. درست همینجاست که یه پروژه جدید به اسم TTT توجه من رو جلب کرد؛ ادیتوری که ادعا میکنه یه جایگزین واقعی برای VS Code، Zed و Sublime Text هست که کاملاً داخل Terminal اجرا میشه!
مثل اکثر نرمافزارهای متنباز جدید، TTT هم با کمک دستیارهای هوش مصنوعی توسعه داده شده.
نصب TTT در لینوکس
برای نصب TTT روی لینوکس، خیلی راحت میتونید از اسکریپت نصب رسمی استفاده کنید. این روزها این روش خیلی رو بورس هست؛ هیچ Package خاصی در کار نیست و فقط کافیه اسکریپت رو مستقیم روی سیستم خودتون curl کنید:
curl -sSfL https://raw.githubusercontent.com/eugenioenko/ttt/main/install.sh | shبا این کار، فایل اجرایی (binary) توی مسیر ~/.local/bin قرار میگیره. برای اجراش هم کافیه Terminal رو باز کنید و دستور زیر رو بزنید:
tttالبته فایلهای اجرایی از پیش ساخته شده هم برای دانلود موجود هستن تا بتونید اون رو توی پوشه دلخواه خودتون بذارید و به صورت پرتابل (portable) ازش استفاده کنید.
امکانات TTT که واقعاً عاشقشون شدم
هدف TTT این نیست که بیاد ادیتورهای سنتی Terminal رو کپی کنه؛ بلکه میخواد یه تجربه مدرن شبیه به برنامههای GUI رو مستقیماً توی محیط Terminal با کمترین نیاز به کانفیگ کردن به شما بده.
Syntax Highlighting
ابزار TTT برای رنگبندی و هایلایت کردن کدها از textmate-go استفاده میکنه که نسخه Go موتور TextMate مایکروسافت (همونی که پشت صحنه VS Code رو روشن نگه میداره) هست. این یعنی بدون نیاز به هیچ تنظیم خاصی، از بیش از ۱۲۰ زبان برنامهنویسی پشتیبانی میکنه و یه تجربه پخته رو بهتون میده.

ویرایش با چند کرسر (Multi-Cursor Editing)
قابلیت Multi-cursor یکی از اون چیزایی هست که وقتی با ابزارهایی مثل Helix کار کنید، تازه میفهمید چقدر کاربردیه و دیگه بدون اون نمیتونید کار کنید.
خوشبختانه TTT این قابلیت رو به صورت پیشفرض داره و نیازی به نصب پلاگین یا تنظیمات خاصی نیست. اگر قبلاً با ادیتورهایی مثل Sublime Text کار کرده باشید، فضای کاریش براتون کاملاً آشناست.
با فشردن کلیدهای Ctrl+D میتونید کلمه مشابه بعدی رو انتخاب کنید و با Alt+Click هم خیلی راحت کرسرهای جدید رو هر جایی که خواستید قرار بدید.
پشتیبانی کامل از ماوس
خیلی از ادیتورهای Terminal ادعا میکنن که از ماوس پشتیبانی میکنن، اما منظورشون فقط کلیک کردن ساده یا اسکرول کردن صفحه ست. اما TTT خیلی فراتر رفته!
کار با ماوس توی این ادیتور دقیقاً شبیه به نرمافزارهای گرافیکیه. میتونید برای جابجایی کرسر کلیک کنید، متن رو با درگ کردن انتخاب کنید و با کلیک راست به منوهای Context دسترسی داشته باشید.
این منوی کلیک راست بهترین بخش ماجراست؛ چون بسته به جایی که کلیک میکنید، گزینههای مرتبط رو نشون میده و حس کار با یه نرمافزار دسکتاپی رو بهتون میده.
پشتیبانی از LSP و تکمیل خودکار (Auto Completion)
امروزه هیچ ادیتوری بدون Auto-completion هوشمند کامل نیست. ابزار TTT این نیاز رو با پشتیبانی از پروتکل LSP یا همون Language Server Protocol به بهترین شکل برطرف کرده.
برای راهاندازی این بخش کافی است language server مربوط به زبانی که باهاش کار میکنید رو نصب کنید. تیم توسعهدهنده یه راهنمای کامل برای راهاندازی این بخش گذاشته که کار رو خیلی راحت میکنه.
workspaceهای چند پوشهای (Multi-folder Workspaces)
این ویژگی به شما اجازه میده چند پوشه مرتبط رو توی یک workspace گروه بندی کنید و دقیقا مثل بخش multi-root توی VS Code باهاشون کار کنید.
نکته جالب اینجاست که میتونید این محیط رو توی یه فایل با فرمت workspace.ttt ذخیره کنید و دفعه بعد دقیقا با همون وضعیت قبلی کار رو ادامه بدید. برای مثال:
{
"folders": [
{ "path": "/home/itsfoss/Projects/text-script-files/" },
{ "path": "/home/itsfoss/Projects/public-dot-files/" },
{ "path": "/home/itsfoss/Projects/desktop-customization" }
]
}حالا میتونید با دستور زیر این workspace رو باز کنید:
ttt --workspace ~/Projects/customization.tttجستجوی مدرن با Ripgrep
ابزار TTT از ripgrep در پشت صحنه استفاده میکنه که بین برنامهنویسها به خاطر سرعت فوقالعادهاش توی پروژههای بزرگ محبوبیت زیادی داره.
ترکیب این ابزار با میانبرهایی مثل Ctrl+K F برای جستجو توی کل پروژه و Ctrl+K R برای جستجو و جایگزینی، سرعت کار رو فوقالعاده بالا میبره.
پشتیبانی داخلی از Git
بخش Changes توی TTT به شما اجازه میده بدون اینکه نیاز باشه به کامندلاین برگردید، کارهایی مثل stage کردن، commit، push، pull و مدیریت repositoryها رو به راحتی انجام بدید.
Terminal داخلی
شاید خندهدار باشه که یکی از بهترین ویژگیهای یه ادیتور مبتنی بر Terminal، داشتن… یه Terminal دیگه باشه! اما توی عمل فوقالعاده کاربردیه.
هر زمان که نیاز به اجرای دستوری داشتید، نیازی نیست تب یا پنجره Terminal رو عوض کنید؛ همهچیز داخل خود TTT در دسترسه و تمرکز شما رو حفظ میکنه.
سیستم پلاگین و شخصیسازی
ابزار TTT از پلاگینهای مبتنی بر Lua پشتیبانی میکنه که به شما اجازه میده قابلیتها، پنلها و کلیدهای میانبر جدیدی رو به ادیتور اضافه کنید، بدون اینکه درگیر تنظیمات پیچیده بشید.
همچنین تنوع تمهای پیشفرض مثل Dracula و Monokai دست شما رو برای شخصیسازی ظاهر محیط باز میگذاره.
جمعبندی
بعد از کار کردن با TTT، بزرگترین نکتهای که متوجه شدم اینه که این ابزار اصلاً حس و حال یک ادیتور معمولی ترمینال رو نداره؛ بلکه بیشتر شبیه یه نرمافزار GUI تمامعیار است که اتفاقاً توی پنجره ترمینال زندگی میکنه!
جامعه لینوکس و کاربران ترمینال همیشه مرز مشخصی بین ابزارهای TUI و GUI قائل بودهاند و TTT عمداً این مرز رو کمرنگ کرده. اما رویکرد تازهاش واقعاً جذاب و طراوتبخشه. اگر شما هم دوست دارید راحتی ادیتورهای مدرن رو توی ترمینال تجربه کنید، TTT قطعاً ارزش یک بار امتحان کردن رو داره.



