Каждый раз, когда разработчик открывает новый вкладку в терминале, особенно в проектах с Git, он ожидает, что всё должно работать мгновенно. Но на деле — вкладка может «зависать» на полсекунды. Это не ошибка системы, а следствие того, что терминал запускает сотни скриптов, которые не нужны в повседневной работе. Такая задержка становится критичной, когда в день открываются сотни вкладок, как это делают многие Dev-инженеры, работающие с Git, тестами и редактированием кода в режиме реального времени.
Что такое Oh My Zsh?
Oh My Zsh — это экосистема для настройки терминала на базе Zsh, которая предлагает готовые плагины: автодополнение, подсказки при вводе команд, отображение состояния Git-репозиториев и т.д. Пользователи часто получают рекомендации использовать его как «стандарт» для настройки своей оболочки. Однако под капотом — это не просто конфигурация, а множество скриптов, которые интерпретируются каждый раз при запуске нового терминала.
Поскольку Oh My Zsh пишется на скриптах, каждый запуск терминала требует их выполнения. Это приводит к увеличению времени загрузки, особенно если включены десятки плагинов. Для большинства разработчиков это лишнее — они не используют все функции, а значит, не нуждаются в таком объёме кода.
Как это работает?
Когда пользователь открывает новую вкладку терминала, Zsh запускается с предустановленными настройками. Если используется Oh My Zsh, то система выполняет все скрипты, включая плагины для автодополнения, отображения состояния Git, автозагрузки виртуальных окружений и др. Эти скрипты не просто «выполняются» — они анализируют текущую директорию, проверяют наличие виртуальных окружений, загружают данные из Git и т.д.
Важно понимать, что даже базовые операции — как переход между директориями или ввод команды — могут быть замедлены из-за этого процесса. Например, в стандартной настройке с плагинами git, zsh-autosuggestions и zsh-autocomplete время запуска может достигать 0,4 секунды. При этом пользователь чувствует, что вкладка «зависла» — это не ошибка, а естественный результат работы системы с большим объёмом скриптов.
Какие преимущества?
- Автоматическое автодополнение при вводе команд — например, ввод «git st» автоматически дополняется «status».
- Визуальное отображение состояния Git-репозитория в промпте — видно, в каком состоянии находится проект.
- Поддержка автодополнения для Python-виртуальных окружений и других инструментов.
- Гибкость — можно настроить темы, изменить внешний вид промпта, добавить логику по уведомлениям.
Какие ограничения или минусы?
Наиболее серьёзный недостаток — это производительность. Запуск терминала может занимать от 0,3 до 0,5 секунды, что в условиях активного использования сотен вкладок становится неприемлемым. Даже при минимальной настройке, плагины всё равно «проверяют» состояние Git, ищут виртуальные окружения и загружают данные.
Особо проблематично — автоматическое обновление. Оно происходит при каждом запуске терминала, даже если пользователь не менял настройки. Это может занимать до нескольких секунд и вызывать ощущение нестабильности. При этом обновления часто идут не от самого Zsh, а от сторонних плагинов, которые не всегда актуальны.
Кроме того, многие плагины не работают на всех системах или требуют дополнительных инструментов — например, автодополнение может не срабатывать при работе в редакторах с включённым режимом ви.
Стоит ли использовать?
Если вы — разработчик, который работает в условиях высокой активности терминалов — стоит отказаться от Oh My Zsh. Его сложность и бloat не оправдывают выигрыша в функциональности для большинства задач.
Вместо этого рекомендуется использовать минимальную настройку Zsh с включёнными только необходимыми опциями:
export HISTSIZE=1000000000— увеличивает объём истории команд.setopt EXTENDED_HISTORY— добавляет временные метки к командам.setopt autocd— позволяет переключаться между директориями без ввода командыcd.autoload -U compinit; compinit— включает систему автодополнения.
Для промпта лучше использовать Starship — это небольшой бинарный инструмент, который заменяет множество плагинов Oh My Zsh. Он отображает только то, что действительно нужно: состояние Git, тип языка, время выполнения команды, имя проекта.
Для включения Starship добавьте в файл
.zshrcстроку:eval "$(starship init zsh)".
Если вам нужно быстро искать команды из истории — используйте Ctrl+R или инструменты вроде ripgrep и zsh-autocomplete, а не автодополнение в плагине.
Важно понимать: если вы не используете Git-состояние, виртуальные окружения или сложные автодополнения — то Oh My Zsh не даёт вам никакого преимущества. Его функциональность — это не «улучшение», а «бутылка с водой»: вы не пьёте, а просто несёте лишнюю массу.














