Почему разработчики всё чаще отказываются от Oh My Zsh

410
Почему разработчики всё чаще отказываются от Oh My Zsh

Каждый раз, когда разработчик открывает новый вкладку в терминале, особенно в проектах с 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 не даёт вам никакого преимущества. Его функциональность — это не «улучшение», а «бутылка с водой»: вы не пьёте, а просто несёте лишнюю массу.

Последнее изменение:

0 Комментарии
Популярные
Новые Старые
Inline Feedbacks
Посмотреть все комментарии