Как превратить свой говнокод в тренажер для слепой печати
Знакомая ситуация: вы открываете MonkeyType или любой другой тренажер печати, а там — бесконечные цитаты из классики или бессмысленные наборы слов вроде «the quick brown fox». Это полезно для скорости, но совершенно не готовит пальцы к реальности, где нужно постоянно вводить async, pub(crate), двойные подчеркивания и фигурные скобки. В какой-то момент мозг просто отключается, потому что текст не имеет отношения к вашей работе.
Недавно наткнулся на GitType. Это CLI-утилита на Rust, которая решает проблему радикально: она превращает ваш собственный исходный код в уровни для игры. Вместо «Hello World» вы будете набирать ту самую функцию, которую написали в три часа ночи и за которую вам немного стыдно.

Что это вообще такое
GitType — это терминальная игра, которая вытягивает код из локальных папок или прямо из репозиториев GitHub. Она использует парсер tree-sitter, чтобы понимать структуру файлов, поэтому вы не просто печатаете текст, а работаете с логическими блоками кода.
Проект написан на Rust с использованием библиотеки Ratatui (это сейчас золотой стандарт для красивых TUI-интерфейсов). Выглядит все очень стильно: графики, ASCII-арт и темы оформления, которые не выжигают глаза.

Зачем это нужно нормальному человеку
Первая мысль — «очередная игрушка». Но если копнуть глубже, у GitType есть несколько неочевидных сценариев использования.
Во-первых, это отличный способ познакомиться с новой кодовой базой. Когда вы приходите в новый проект, полезно не просто «проглядеть» файлы, а буквально пропустить их через кончики пальцев. Пока вы набираете чужой код, мозг волей-неволей замечает паттерны именования, структуру модулей и странные архитектурные решения.
Во-вторых, это легальный способ «выглядеть занятым». Со стороны кажется, что вы яростно строчите код (что правда), хотя на самом деле вы просто проходите уровень в Time Attack. Автор проекта в README прямо так и пишет: «Используйте это как оправдание, чтобы не работать».
Главные фишки
Инструмент поддерживает кучу языков: от Rust и TypeScript до Haskell и Zig. Список постоянно пополняется. Вот что мне показалось наиболее интересным:
- Работа с реальными репозиториями. Можно натравить утилиту на конкретный URL. Например,
gittype --repo ratatui-org/ratatuiзагрузит код популярной библиотеки, и вы сможете попрактиковаться на коде профессионалов. - Тренды GitHub. Команда
gittype trendingоткрывает список самых популярных репозиториев за день. Можно выбрать язык (например, Go) и посмотреть, что сейчас пишут люди, заодно прокачав скорость печати. - Система рангов. За прохождение уровней дают звания. Начинаете как «Hello World Newbie», а закончить можно в статусе «Quantum Computer». Каждое звание сопровождается своим ASCII-артом. Мелочь, а приятно.
- Аналитика. Внутри есть полноценный раздел с графиками. Можно отследить свою точность, WPM (слов в минуту) и консистентность по разным языкам программирования.

Как запустить
Установка максимально простая, особенно если у вас уже стоит Rust.
Если есть Cargo:
cargo install gittype
Для пользователей macOS через Homebrew:
brew install gittype
Или просто через curl, если не хочется возиться с пакетными менеджерами:
curl -sSL https://raw.githubusercontent.com/unhappychoice/gittype/main/install.sh | bash
После установки просто перейдите в папку со своим проектом и введите gittype. Утилита сама найдет файлы и предложит начать игру.
Техническая сторона вопроса
Интересно, как проект обрабатывает код. Он не просто берет сырой файл и разбивает его на строки. Благодаря tree-sitter, GitType понимает, где заканчивается одна функция и начинается другая. Это позволяет генерировать осмысленные фрагменты для печати, а не обрывки текста на середине условия.
Внутри также зашито более 15 тем оформления. Есть темные, светлые и даже кастомные варианты. Если вам нравится эстетика Gruvbox или Solarized, вы найдете что-то для себя.

Стоит ли пробовать
Если вы проводите в терминале большую часть рабочего времени, GitType — это отличная альтернатива скучным тренажерам. Он помогает набить руку именно на тех конструкциях, которые вы используете каждый день: стрелочные функции, пайпы, сложные типы в Rust или декораторы в Python.
Особенно проект зайдет тем, кто хочет подтянуть слепую печать, но засыпает на втором абзаце «Алисы в стране чудес». Печатать собственный код (или код крутых опенсорс-проектов) куда азартнее.
Конечно, это не заменит полноценную работу, но как пятиминутный перерыв между задачами — вариант идеальный. По крайней мере, это полезнее, чем в очередной раз обновлять ленту новостей.
Единственный минус — на очень больших файлах или специфических конфигурациях парсер иногда может вести себя странно, но проект активно развивается, и патчи выходят довольно часто. На данный момент у проекта уже больше 1400 звезд на GitHub, что для такой нишевой утилиты очень достойный результат.
