Когда я был еще джуном, старшие разработчики настоятельно советовали мне перейти на zsh. Я помню, что я так и не получил никакой аргументации, чем zsh лучше, чем привычный bash, и какие преимущества я смогу использовать.
Что ж, в этой статье я хочу ответить на эти вопросы тем, кто еще только задается этим вопросом, с небольшим уклоном к PHP разработке
Zsh это командная оболочка, то есть программа, которая получает от пользователя команду в текстовом виде и выполняет соответствующие исполняемые файлы, найденные по путям, указанным в переменной окружения PATH.
Zsh является дефолтной оболочкой для macOS, на linux дефолт — bash. Zsh лучше, чем bash в основном благодаря своей очень обширной системе плагинов, модулей, различных тем и тд
Например установив вот такой плагин
brew install zsh-autosuggestions
И включив его через добавление в ~/.zshrc следующей строки
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
Я получаю автокомплит в терминале, подобный автокомплиту, когда пишешь код в PHPStorm:

Автокомплит основан на истории ваших запросов (можно посмотреть через history, например), из-за чего может подсказывать и неверные команды. То есть это не AI какой-нибудь, а скорее что-то вроде
history | grep "$CURRENT_INPUT"
Поэтому вы можете хотеть понастраивать хранение истории, например
# History # хранить историю в указанном файле export HISTFILE=~/.zsh_history # максимальное число команд, хранимых в сеансе export HISTSIZE=1000 export SAVEHIST=$HISTSIZE # включить историю команд setopt APPEND_HISTORY # убрать повторяющиеся команды, пустые строки и пр. setopt HIST_IGNORE_ALL_DUPS setopt HIST_IGNORE_SPACE setopt HIST_REDUCE_BLANKS
Если же я установлю еще один модуль:
brew install zsh-syntax-highlighting
И включу этот плагин аналогичным образом в ~/.zshrc
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
Я получу подсветку синтаксиса команд:

Здесь я ввел невалидную команду, и еще до ее сабмита я вижу где я ошибся

Zsh стоит ставить сразу вместе с Oh-my-zsh. Это своего рода менеджер плагинов
Например, у меня в ~/.zshrc прописаны следующие плагины:
plugins=(git composer symfony6 docker docker-compose)
Замечу, что git по умолчанию включен, а остальные уже я ручками добавил. Для laravel тоже есть плагин, просто я не пишу на ларе
Давайте разберем, какую именно пользу можно из них почерпнуть
-
Регистрирует в оболочке большущий сет алиасов и функций. То что я запомнил и использую:
—
glвместоgit pull
—gpвместоgit push
—gcbвместоgit checkout -bНа отображение текущей ветки в терминале наличие этого плагина не влияет
-
Все что делает, это регистрирует свои алиасы. Из полезного imho:
—
cвместоcomposer
—ciвместоcomposer install
—cuвместоcomposer update -
Остальные плагины делают ровно то же самое, найти списки их алиасов можно в репозитории
Часто вижу, что подобные алиасы для докера/композера/гита разработчики часто сами регистрируют, но можно жить проще!
На отображение промпта оболочки влияют темы:

Самой известной является powerlevel10k, после установки она запустит свой wizard, в котором вы сможете настроить отображение промпта по шагам (цвета, иконки и прочее)
Единственное, я бы рекомендовал, если ваш терминал отображает весь путь к текущей папке от домашней директории, поставить в конфиг файле ~/.p10k.zsh опцию POWERLEVEL9K_SHORTEN_STRATEGY в значение truncate_to_last, будет отображать только название папки в которой находитесь (как на моих скринах)
Подводя итоги — автокомплит и алиасы здорово экономят время и нервы (вас же тоже бесит печатать docker compose blablabla ?).
Вдобавок zsh красивее, чем bash, и чем-то неуловимо приятнее
Скрытый текст
Понравилась статья? Подписывайся на мой [тгк](https://t.me/+rPaGqfiAC-QwNTI6)
Делитесь своими лайфхаками по настройке zsh 🙂
ссылка на оригинал статьи https://habr.com/ru/articles/929352/
Добавить комментарий