Я полистал, и вспомнил, что у меня-то терминал тоже долго открывается. Оказалось до 1.47 сек. Неприятненько. Решил разобраться что к чему.
Для начала небольшая экскурсия в часто-рекомендуемый стек работы с терминалом:
- эмулятор терминала: например iTerm2 или ghostty. Отвечает за отрисовку терминала, GUI по сути.
- zsh - командный интерпретатор. По дефолту в Макоси стоит именно zsh. Аналоги: bash, fish, sh
- oh-my-zsh - фреймворк для zsh для более удобной установки плагинов, тем и т.д.
- prompt - тема для строки приглашения, например: powerlevel10k или starship
У zsh есть свой профайлер, чтобы его включить добавляем в
~/.zshrc:# в начало файла
zmodload zsh/zprof
.....
# в конец файла
zprof
Посмотрим, что там у меня больше всего тормозит:
nvm_auto 398.78ms 50.55%
__yc_bash_source 163.05ms 20.67%
nvm 195.29ms 24.75%
compinit 226.47ms 28.71%
nvm, тулза для яндекс облака, и какой-то compinit. В принципе, вещи которыми я пользуюсь довольно редко. Скрипты nvm и yc в
.zshrc поставились автоматически при установке соответствующих инструментов. Там всякие автокомплиты, обновления, сканы файлов…Для nvm и yc сделал “ленивую” загрузку, чтобы эти скрипты загружались в сессию только при запуске команды. (см. в примере ниже)
compinit - это оказался автокомплит в zsh. Для него выключаю аудит файлов, проверку кэша:autoload -Uz compinit
compinit -C -u
Из той статьи я решил подчерпнуть минималистичность конфигурации и призыв ставить только то, что нужно. Поэтому удаляю все следы oh-my-zsh из
.zshrc. Понадобится - поставлю.Плагин
zsh-autosuggestions ставлю через brew.А любимую тему для prompt (powerlevel10k) ставлю без oh-my-zsh.
Вот такое мне уже нравится:
/usr/bin/time zsh -i -c exit
0.17 real
Теперь хочется добавить в промпт информацию об активной версии Python и venv.
В репозитории обновил свой актуальный .zshrc.
✨ А чем вы пользуетесь для работы с терминалом? Делитесь вашим стеком, темами и скриншотами в комментариях!
