Oh My Zsh: прокачай свой терминал

Стандартный терминал Unix систем, будь то MacOS или Linux, неплох. И все же, от инструмента, за которым приходится работать каждый день, хочется большего. Ниже представлена версия того, как сделать его более удобным и продуктивным.

Новичкам возможно будет интересно (и полезно):

Знакомьтесь, iTerm2

Для начала, замените стандартный терминал на что-нибудь получше. Пользователям MacOS рекомендую iTerm2. Для пользователе прочих Unix систем существуют другие решения, например Guake.

Список функций iTerm2 представлен на официальной странице, среди них: автодополнение, поиск с подсветкой в консоли, сплит панели, копирование без использования мыши, переключение в терминал с помощью горячей клавиши, менеджер паролей и другие.

iTerm2

Чтобы установить iTerm2 вручную: скачайте его с официального сайта, распакуйте скачанный архив и переместите приложение в папку с программами.

Или, если используете Homebrew, установить iTerm2 можно одной командой:

brew cask install iterm2

Самый популярный шорткат — быстрое отображение или скрытие iTerm2. Можно сделать чтобы консоль выезжала сверху, как в Quake.

iTerm2 Console

Но фича не работает из коробки, поэтому потребуется выполнить некоторые действия: перейдите в настройки (iTerm2Preferences), далее ProfilesKeysConfigure Hotkey Window, хоткей можно указать любой, остальные настройки как на скриншоте ниже.

Configure Hotkey iTetm2

Далее (там же в Profiles) перейдите в Window, и установите настройки как на скриншоте (или измените по своему усмотрению). За стиль окна отвечает настройка Style.

Configure Window iTetm2

Можно двигаться дальше.

Мигрируй на Zsh

Zsh она же Z shell — одна из современных командных оболочек Unix. Мало кто знаком и использует все ее функции. Однако это и не требуется — фреймворк Oh My Zsh, который мы установим далее, позволит настраивать ее и кастомизировать с помощью тем и плагинов.

У пользователей MacOS, скорее всего, Zsh уже установлена, если нет — установите с помощью менеджера пакетов Homebrew, а затем сделайте zsh оболочкой по умолчанию.

brew install zsh
chsh -s /bin/zsh

Установка zsh в Ubuntu и Debian.

apt install zsh
chsh -s /bin/zsh

Пользователи прочих Unix систем наверняка справятся с установкой.

Убедиться, что zsh является оболочкой по умолчанию можно следующей командой.

echo $SHELL

Результат /bin/zsh означает, что все сделано верно.

Далее необходимо перелогиниться. Когда вновь откроете терминал, возможно увидите приветственное сообщение zsh. Ничего не меняйте и выйдите, выбрав q.

Zsh: быстрый старт

Еще до установки Oh My Zsh и плагинов можно оценить мощь Zsh.

Попробуйте ввести следующую команду:

!!

Она вставит в консоль предыдущую команду. Будет полезна, если забыли указать sudo для команды требующей root:

you-sudo-command
error: you cannot perform this operation unless you are root.
sudo !!
sudo you-sudo-command

От предыдущей команды можно взять только аргумент.

cd ~/MyFolder
cd: no such file or directory: cd ~/MyFolder
mkdir !*
mkdir ~/MyFolder

Вставить в консоль последнюю команду, начинающуюся с указанных символов:

!part-of-command

Конструкция похожа на предыдущую, но применима для известной части символов в середине или в конце команды:

!?part-of-command?

Например, !?VIDEO? из моей истории команд, после нажатия на Tab, преобразуется в:

git push --set-upstream origin dt.feature.VIDEO-10000

Опечатку в последней введенной команде можно исправить так:

^dc^cd

А с помощью следующей команды удобно сделать бэкап файла.

cp nginx.conf{,.bak}

Конструкция выше аналогична команде:

cp nginx.conf nginx.conf.bak

Следующая конструкция удалит ранее распакованные файлы. Будет полезна если вы распаковали архив tar.gz не в тот каталог.

rm -f `tar ztf /path/to/file.tar.gz`

Примеры выше, малая доля того, что умеет Zsh. Еще больше возможностей открывается при использовании фреймворка Oh My Zsh.

Установка Oh My Zsh

Oh My Zsh — open source фреймворк, поддерживаемый сообществом. Предназначен для управления настройками Zsh и расширяющий его функционал и за счет плагинов и тем.

Ссылка на репозиторий.

Установка через curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Установка через wget

sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Установка вручную (загрузите скрипт, затем выполните его)

curl -Lo install.sh https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh

sh install.sh

Oh My Zsh установится в папку ~/.oh-my-zsh. Если понадобится удалить Oh My Zsh, не удаляйте папку вручную, а воспользуйтесь специальной командой:

uninstall_oh_my_zsh

Oh My Zsh в действии

Одно из неудобств консоли — перемещение по папкам. Oh My Zsh расширяет возможности автодополнения по кнопке Tab.

Например, Oh My Zsh исправляет регистр букв. Можно написать:

cd ~/do

Затем нажать Tab и команда преобразуется в:

cd ~/Desktop/

Если с введенных символов начинаются имена нескольких каталогов, по нажатию на Tab будет выведен список уточнений, а при повторном нажатии Tab, стрелками (или последующими нажатиями Tab) можно будет выбрать нужный каталог.

Автодополнение в Oh My Zsh

Автодополнение работает для любой части файлов и каталогов. Чтобы перейти в каталог ~/Downloads, можно написать:

cd load

По нажатию Tab, строка будет преобразована.

cd ~/Downloads/

Oh My Zsh умеет дополнять имена каталогов по всему пути, а не только по последней его части, например:

ls /v/l/apa

По нажатию Tab, строка будет преобразована.

ls /var/log/apache2

А если добавить в файл конфигурации ~/.zshrc часто используемые каталоги в переменную CDPATH, то не нужно будет печатать даже первые буквы имен каталогов.

export CDPATH=/var/www:/home/имя_пользователя/MyFolder

вот так

cd MyFolder

Выбор темы

Дефолтная тема Oh My Zsh минималистична и хороша, но я предпочитаю Agnoster. Обратите внимание, как информативно выглядит в ней git-репозиторий.

Чтобы установить тему из репозитория откройте файл ~/.zshrc, и в поле ZSH_THEME замените значение на имя понравившейся темы.

ZSH_THEME="agnoster"

Подобрать тему можно на странице репозитория Oh My Zsh.

Чтобы установить внешнюю тему, скачайте ее, а затем переместите в каталог тем ~/.oh-my-zsh/custom/themes.

Если после установки темы наблюдаете проблему со шрифтами, странные символы или кривые уголочки нужно установить дополнительные шрифты powerline patched fonts.

cd ~/Downloads/
git clone https
://github.com/powerline/fonts.git
cd fonts
./install.sh

Затем перейдите в настройки iTerm2Preferences, далее ProfilesText и в поле Font выберите скачанный шрифт, например Meslo LG или Droid Sans. Перезапустите терминал, теперь шрифты будут корректно отображаться в выбранной теме.

Выбор цветовой схемы

Рекомендую попробовать цветовые схемы iTerm2 Material Design или тему Dracula.

Цветовые схемы устанавливаются в дополнение к темам, чтобы сделать вид терминала еще привлекательнее, или вместо них — если тему по душе вы еще не подобрали.

Так выглядит мой терминал с установленной темой Agnoster и цветовой схемой Dracula.

Чтобы изменить цветовую схему терминала, скачайте понравившуюся, а затем перейдите в настройки iTerm2Preferences, далее ProfilesColor и в поле Color Presets (справа внизу), выберите пункт Import и импортируйте, а затем выберите скачанную тему.

Плагины

Плагины расширяют возможности Oh My Zsh. Список всех плагинов входящих в состав Oh My Zsh приведен на странице репозитория.

Как и в случае с темами, чтобы добавить плагин, нужно прописать его название в файле ~/.zshrc, секция plugins. Например, чтобы активировать плагин docker, добавьте «docker» в секцию plugins.

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
docker
)

Чтобы установить сторонний плагин, его нужно предварительно скачать и положить в каталог сторонних плагинов ~/.oh-my-zsh/custom/plugins.

По умолчанию включен только один плагин — git. Он показывает актуально ли текущее состояние репозитория, активную ветку и есть ли изменения. Таким образом не нужно постоянно проверять git branch -v и git status.

Несколько полезных плагинов из репозитория Oh My Zsh:

npm — добавлят поддержку автодополнения к npm;
vagrant — автодополнения для vagrant, если пользуетесь им;
composer — автодополнения и алиасы;
sudo — если для выполнения команды потребовались права суперпользователя, плагин позволит не возвращаться в начало строки, а нажать два раза Esc, и он добавит sudo в начало команды.

И пара интересных внешних плагинов:

zsh-syntax-highlighting — добавляет подсветку синтаксиса, подсвечивает команду если в написании допущена ошибка;
zsh-autosuggestions — предугадывает команды на основе ранее вводимых.

Алиасы

Алиасы или псевдонимы — это сокращения для длинных команд или даже последовательности команд.

Список текущих алиасов Oh My Zsh можно посмотреть командой:

alias

Свои алиасы можно добавлять в файле ~/.zshrc

Example aliases
alias zshconfig="mate ~/.zshrc"
alias ohmyzsh="mate ~/.oh-my-zsh"
alias dkps="docker ps"
alias dkst="docker stats"

Шпаргалка с алиасами встроенными в Oh My Zsh доступна на странице репозитория. Ознакомьтесь, а лучше запомните.

Ссылки

Официальный сайт iTerm2
Официальный сайт Oh My Zsh
zsh.org
Powerline Fonts

На этом всё. Но вы можете помочь проекту. Обещаю писать больше полезных статей.

А если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.