Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

TTT — текстовый редактор с интерфейсом в стиле GUI для терминала Linux

Разработчики консольного программного обеспечения продолжают стирать грани между текстовыми интерфейсами (TUI) и графическими программами (GUI). Одной из таких разработок стал новый проект TTT, позиционируемый как полноценная альтернатива современным графическим редакторам кода, которая работает прямо внутри командной строки и предлагает терминальный текстовый редактор с привычным набором функций без необходимости долгой настройки и изучения сложных модальных сочетаний клавиш.

Инструмент создан для тех, кто активно работает со скриптами, конфигурационными файлами или удаленными серверами, но не хочет тратить время на освоение Vim или Neovim с их крутым порогом вхождения.

TTT — текстовый редактор с интерфейсом в стиле GUI для терминала Linux
TTT — текстовый редактор с интерфейсом в стиле GUI для терминала Linux — изображение 3

Установка TTT в Linux

В современных реалиях установка подобных утилит максимально упрощена. Пользователи Linux могут задействовать официальный скрипт установки, который скачивает бинарный файл одной командой через терминал:

Реклама

curl -sSfL https://raw.githubusercontent.com/eugenioenko/ttt/main/install.sh | sh

Данный скрипт размещает исполняемый файл в директории ~/.local/bin. Для запуска достаточно вызвать команду ttt в любой удобной консоли. Кроме того, на странице проекта распространяются предварительно собранные бинарные файлы, которые можно скачать и использовать в портативном режиме, разместив в произвольной папке на компьютере.

Основные возможности и функции редактора

Главная цель проекта заключается в предоставлении комфортного рабочего пространства, напоминающего десктопные среды, но функционирующего исключительно в терминальной среде. Ниже рассмотрены ключевые особенности интерфейса и встроенных механизмов TTT.

Подсветка синтаксиса

За корректное отображение кода отвечает библиотека textmate-go. Это реализация движка TextMate от компании Microsoft на языке Go, которая также применяется для подсветки синтаксиса в Visual Studio Code. Заявлена поддержка более чем 120 языков программирования «из коробки», благодаря чему приложение обеспечивает уровень проработки, характерный для полноценных IDE.

Редактирование с несколькими курсорами

Многокурсорный ввод стал стандартом де-факто для многих разработчиков, привыкших к Sublime Text или Helix. В TTT эта возможность реализована по умолчанию, без потребности подключать сторонние дополнения. Клавиша Ctrl+D позволяет выделить следующее совпадение выбранного фрагмента, а комбинация Alt+Клик дает возможность расставить дополнительные курсоры в нужных точках текста.

Расширенная поддержка мыши

Многие программы для командной строки ограничиваются простым кликом для перемещения курсора и прокруткой. В TTT взаимодействие с мышью реализовано на более глубоком уровне: поддерживается клик для установки позиции, выделение текста перетаскиванием, а также вызов контекстных меню по правому клику. Меню динамически подстраивается под место нажатия и предлагает релевантные действия.

Реклама

Протокол LSP и автодополнение

Интеграция с протоколом языковых серверов (Language Server Protocol) обеспечивает интеллектуальное автодополнение кода и контекстные подсказки. Для работы функции требуется предварительно установить языковой сервер для используемого языка программирования. На официальном ресурсе проекта доступно подробное руководство по настройке серверов для различных языков, что помогает избежать лишних трудностей.

Многопапочные рабочие пространства

Функция многопапочных рабочих областей позволяет объединять связанные каталоги в единый проект, аналогично механизму многокорневых рабочих пространств в VS Code. Полученную конфигурацию можно сохранить в файл с расширением workspace.ttt и открывать в дальнейшем одной командой вроде ttt --workspace ~/Projects/customization.ttt. Создавать файл вручную не обязательно, так как текущее расположение директорий сохраняется через пункт меню «File -> Save Workspace As».

Интегрированный поиск с Ripgrep

Для быстрой навигации по кодовой базе задействована утилита ripgep, известная своей производительностью при обработке крупных проектов. Пользователям доступны горячие клавиши вроде Ctrl+K F для поиска по рабочей области и Ctrl+K R для глобальной замены текста, что приближает терминальный инструмент по скорости и удобству к графическим редакторам.

Интеграция с системами контроля версий Git

Встроенная панель изменений позволяет выполнять базовые операции с репозиториями: индексировать файлы, отменять изменения, делать коммиты, отправлять данные на сервер и синхронизировать ветки без переключения на командную строку. Встроенный просмотрщик различий (diff) совмещает анализ кода с подсветкой синтаксиса, а индикаторы в поле номера строк и встроенная информация об авторах строк (blame) упрощают отслеживание правок.

Встроенный терминал

Внутри самого редактора присутствует полноценный эмулятор терминала, поддерживающий вкладки, отрисовку истинных цветов (true-color), прокрутку истории и переключение между панельным и полноэкранным режимами. Это избавляет от необходимости открывать дополнительные вкладки в сторонних терминальных эмуляторах при выполнении сопутствующих команд.

Поддержка плагинов и тем оформления

Функциональность редактора расширяется за счет скриптов на языке Lua, которые выполняются в изолированной песочнице с запросом прав на каждое действие. Управлять плагинами можно через специальную графическую панель интерфейса. Для оформления интерфейса предусмотрен набор встроенных тем вроде Dracula и Monokai с предварительным просмотром «на лету», а тонкая настройка элементов через JSON-файлы позволяет изменить любые визуальные параметры.

Заключение

Проект демонстрирует необычный подход к созданию программ для командной строки, стирая жесткие рамки между классическими интерфейсами TUI и десктопным ПО. Хотя подобное направление нравится далеко не всем приверженцам традиционного минимализма в Unix-системах, TTT предлагает богатый набор функций и избавляет от компромиссов, с которыми обычно сталкиваются разработчики при переходе из графической среды в терминал.

01.