Статьи

10 Zsh Tips & Tricks: настройка, настройка и использование

Как веб-разработчики, командная строка становится все более важной частью нашего рабочего процесса. Мы используем его для установки пакетов из npm, для тестирования конечных точек API, для отправки коммитов в GitHub и многого другого.

Моя оболочка выбора — Zsh . Это настраиваемая оболочка Unix, которая включает в себя некоторые очень мощные функции, такие как завершение вкладки, умная история, расширение удаленных файлов и многое другое .

В этой статье я покажу вам, как установить zsh, а затем предложу десять советов и приемов, которые помогут вам более продуктивно работать с ним.

Это руководство для начинающих, которым может следовать кто угодно (даже пользователи Windows, благодаря Windows Subsystem for Linux). Тем не менее, в свете заявления Apple о том, что zsh теперь является стандартной оболочкой для macOS Catalina , пользователи Mac могут найти ее особенно полезной.

Давайте начнем.

Установка

Я не хочу предлагать подробные инструкции по установке для каждой операционной системы, а скорее общие рекомендации. Если вы застряли при установке zsh, в Интернете есть много помощи.

На момент написания текущей версии Zsh 5.7.1.

Macos

Большинство версий macOS поставляются с предустановленной zsh. Вы можете проверить, так ли это, и если да, то какую версию вы используете, используя команду: zsh --version . Если версия 4.3.9 или выше, вам стоит поехать (нам понадобится хотя бы эта версия, чтобы установить Oh My Zsh позже). Если нет, вы можете следовать этому руководству, чтобы установить более свежую версию zsh, используя homebrew.

После установки вы можете установить zsh в качестве оболочки по умолчанию, используя: chsh -s $(which zsh) . После выполнения этой команды вам необходимо выйти из системы, а затем снова войти в нее, чтобы изменения вступили в силу.

Если в какой-то момент вы решите, что вам не нравится zsh, вы можете вернуться к Bash, используя: chsh -s $(which bash) .

Linux

В дистрибутивах на основе Ubuntu вы можете установить zsh с помощью: sudo apt-get install zsh . После завершения установки вы можете проверить версию, используя zsh --version , а затем сделать zsh оболочкой по умолчанию, используя chsh -s $(which zsh) . Вам нужно будет выйти, а затем снова войти, чтобы изменения вступили в силу.

Как и в MacOS, вы можете вернуться к Bash, используя: chsh -s $(which bash) .

Если вы используете дистрибутив не на основе Ubuntu, ознакомьтесь с инструкциями для других дистрибутивов .

Windows

К сожалению, здесь все становится немного сложнее. Zsh — это оболочка Unix, и для ее работы в Windows вам потребуется активировать подсистему Windows для Linux (WSL) , среду в Windows 10 для запуска двоичных файлов Linux.

В Интернете есть различные учебники, объясняющие, как начать работу с zsh в Windows 10s. Я нашел эти два, чтобы быть современными и легкими следовать:

Обратите внимание, что также возможно запустить zsh с Cygwin . Вот инструкции для этого .

Первый забег

Когда вы впервые откроете zsh, вы увидите следующее меню.

Zsh меню первого запуска

Если вы выберете (1) вы попадете в меню, которое позволяет вам настроить историю, сочетания клавиш и кучу других вещей. Однако я предлагаю выбрать (2) чтобы создать профиль конфигурации с рекомендуемыми настройками по умолчанию.

Расположение файла конфигурации

Теперь давайте посмотрим на файл, который только что создал zsh. Введите свой домашний каталог и откройте файл .zshrc в .zshrc редакторе. Этот файл запускается всякий раз, когда вы запускаете zsh, и это место, где живет любая пользовательская конфигурация.

Примечание . Имена файлов, начинающиеся с точки, по умолчанию скрыты в большинстве операционных систем, поэтому вам необходимо сделать их видимыми, прежде чем их можно будет редактировать. Если вы не знаете, как это сделать, выполните поиск по запросу «Показать скрытые файлы Mac / Linux и т. Д.»

Мы можем продемонстрировать, как работает этот файл, создав псевдоним. В своей простейшей форме псевдонимы являются терминальными ярлыками для обычных команд. Добавьте следующее в .zshrc и сохраните файл:

 alias myip="curl http://ipecho.net/plain; echo" 

Перезапустите вашу оболочку (например, закрыв ее и открыв снова), затем введите myip . Если у вас установлена ​​программа cURL , вы должны увидеть ваш текущий публичный IP-адрес, выведенный на терминал. Если вы хотите больше экспериментировать с псевдонимами, ознакомьтесь с 7 супер полезными псевдонимами, чтобы упростить вашу жизнь при разработке .

Закройте терминал, введя команду exit , и найдите файл .zsh_history , который также находится в вашем домашнем каталоге. Здесь zsh хранит список ваших предыдущих команд терминала. В настоящее время он должен содержать две строки, а именно myip и exit .

Примечание: мы будем перезагружать нашу оболочку несколько раз в этом уроке. Вы также можете сделать это с помощью команды: source ~/.zshrc .

Проверить ваши успехи

К этому моменту вы должны установить zsh и установить его как оболочку по умолчанию. Если у вас возникнут проблемы, попробуйте создать тему на форумах SitePoint и попросить о помощи там.

Теперь давайте разберемся с некоторыми советами.

1. Установите Oh My Zsh

Если вы следуете только одному из этих советов, он должен быть именно этим.

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

Как объясняется на домашней странице проекта, вы можете установить его, используя cURL или wget.

 sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 
 sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" 

Это предполагает, что у вас установлен git, что, надеюсь, уже сделано. Если нет, вы можете получить его с домашней страницы проекта .
Oh My Zsh сообщение об установке

Как вы можете видеть, из сообщения после установки Oh My Zsh создал резервную копию вашего файла .zshrc , а затем заменил его собственной версией. Это означает, что вам нужно скопировать любую пользовательскую конфигурацию (например, псевдоним myip ) в ваш новый файл .zshrc .

2. Выберите тему

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

Если вы посмотрите в файле ~/.zshrc переменную ZSH_THEME , вы обнаружите, что она установлена ​​в robbyrussel . Это тема по умолчанию, которую использует создатель Oh My Zsh.

Чтобы установить другую тему, выберите ее по ссылке выше и измените значение переменной ZSH_THEME , прежде чем перезапускать вашу оболочку. Например, установка ZSH_THEME="avit" заставит Oh My Zsh использовать тему avit .

Вы также можете изменить цветовую схему для вашего терминала. На моей машине с Linux я мог сделать это через Edit > Preferences > Colors . Сняв галочку с « Использовать цвета из системной темы» , затем выбрав « Соляризованная темнота» в качестве схемы, я получаю очень привлекательный результат практически сразу.

Авит тема на Oh My Zsh

Обратите внимание, как тема распознает, что она находится в git-репо, сообщает мне, в какой ветке я нахожусь, и отображает зеленую галочку, чтобы сообщить, что все обновлено.

Я призываю вас просмотреть доступные темы и найти ту, которая подходит вам.

Исправление проблем

Когда я тестировал это на WSL, я увидел неработающие символы в моем терминале, как только я установил Oh My Zsh. Чтобы исправить это, я должен был установить шрифты Powerline и указать терминалу использовать их.

 git clone https://github.com/powerline/fonts.git 

Затем откройте административную оболочку PowerShell, перейдите в корень репозитория и выполните:

 .\install.ps1 

Если PowerShell блокирует выполнение сценария, попробуйте установить ExecutionPolicy в соответствии с ответом StackOverflow . После того, как шрифты установлены, обязательно верните их снова.

Наконец, щелкните правой кнопкой мыши строку заголовка терминала, выберите « Свойства» > « Шрифт» и убедитесь, что выбран шрифт Powerline. В тестировании Deja Vu Sans Mono для Powerline работал хорошо для меня.

Также обратите внимание, что для нескольких тем требуются шрифты Powerline независимо от операционной системы. Мы рассмотрим установку одной из этих тем ( Agnoster ) в конце статьи.

3. Работа с историей

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

 cd Desktop mkdir my-project cd my-project npm init -y mkdir {src,build} touch index.js 

Если вы находитесь в терминале и нажимаете клавишу ,, вы ожидаете, что по очереди будете последовательно просматривать каждую из этих записей истории, верно? Там нет ничего удивительного.

Тем не менее, Oh My Zsh позволяет вам ввести начало команды, а затем нажать клавишу to для циклического перехода между соответствующими записями. Итак, в приведенном выше примере, если вы ввели «mkdir» и затем нажали клавишу ,, вы увидите «mkdir {src, build}». Если вы нажмете еще раз, вы увидите «mkdir my-project».

Я использую эту функцию все время. Например, когда я хочу подключиться к серверу по протоколу ssh и не могу вспомнить точные учетные данные, я просто ввожу «ssh» и могу переключаться между последними соединениями, пока не найду правильное. Или, когда я не могу вспомнить точный синтаксис команды, я могу просто ввести первые несколько символов и просмотреть любые совпадения.

4. Самовнушения FTW!

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

Oh My Zsh поставляется с сотнями плагинов для каждого мыслимого использования, и мы рассмотрим некоторые из них позже в этой статье. Однако в этом разделе я хотел бы познакомить вас со сторонним плагином, который называется autosuggestions . Это предполагает команды при вводе на основе истории.

Для установки вам нужно клонировать свой репозиторий в $ZSH_CUSTOM/plugins . По умолчанию это ~/.oh-my-zsh/custom/plugins .

 git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 

После этого ~/.zshrc файл ~/.zshrc и раскомментируйте следующую строку:

 # plugins=(git) 

Затем замените git на zsh-autosuggestions

 plugins=(zsh-autosuggestions) 

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

Самовнушения с Oh My Zsh

5. Навигация по файлам с помощью Oh My Zsh

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

Например, если вы хотите изменить каталог, нет необходимости вводить команду cd , т.е. cd Desktop просто становится Desktop . И это также работает с путями — вы можете войти в /home/jim/Desktop и в конечном итоге оказаться там, где вы хотели.

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

Oh My Zsh навигация по файлу с завершением вкладки

Наконец, стоит упомянуть, что Oh My Zsh предоставляет ряд команд и псевдонимов для работы с каталогами и навигации по ним . Например, если вы наберете ... вы переместитесь вверх на две директории, а после ввода take <dir-name> создаст новую директорию и перейдет к ней. Oh My Zsh также поддерживает динамическое завершение пути, поэтому, набрав (например) /h/j/De и нажав Tab, вы развернете путь к /home/jim/Desktop . Круто, а?

Бонусный совет : если вам лень, вы можете просто перетащить папку в окно терминала, и путь будет расширен для вас.

6. Перейдите к чему угодно, используя z

z — это удобный плагин, который создает список ваших самых частых и последних папок (он называет их «свободными») и позволяет переходить к ним одной командой. Часто это гораздо удобнее, чем переходить по структуре вложенных папок.

Чтобы установить плагин, все, что вам нужно сделать, это добавить его в файл .zshrc следующим образом:

 plugins=(z zsh-autosuggestions) 

Затем перезапустите свой терминал.

После установки z будет иметь короткую фазу обучения, поскольку она будет наблюдать за перемещением по ПК с помощью терминала. Однако через некоторое время вы сможете набрать z а затем любое слово в нужном вам пути к каталогу. Плагин будет использовать нечеткое сопоставление, чтобы выяснить, в какую папку вы хотите перейти, и соответственно расширить путь. Если существует более одной возможности, вы можете переключаться между параметрами, как описано в предыдущем совете.

Это может показаться не таким уж большим делом, но вы сможете открыть оболочку, наберите z my-project и попросите ее развернуть путь к /home/jim/files/some/deeply/nested/directory/or/other/my-project . Затем, находясь в этом каталоге, вы можете набрать z my-other-project и развернуть путь к /var/www/html/projects/top/secret/my-other.project .

Примечание: когда я впервые запустил z и попытался сменить каталог, я получил ошибку
_z_dirs:2: no such file or directory: /home/jim/.z . Это был один раз, поскольку z, очевидно, нужно было сделать файл .z в моем домашнем каталоге. Если у вас возникнут какие-либо проблемы, в этой статье есть несколько предложений .

7. Работа с Git

Zsh включает в себя базовую интеграцию с git из коробки. Например, если вы git и нажмете клавишу Tab , zsh выложит длинный список возможных команд git. Это становится немного более полезным, если вы git , а затем первые пару букв искомой команды. Например, git a + Tab производит:

 add -- add file contents to index am -- apply patches from a mailbox apply -- apply patch to files and/or to index archimport -- import an Arch repository into git archive -- create archive of files from named tree 

Все становится интереснее, когда вы устанавливаете плагин Oh My Zsh git .

 plugins=(git z zsh-autosuggestions) 

Это предоставляет целую кучу псевдонимов, а также некоторые полезные функции для работы с git. Вот некоторые из тех, которые я часто использую:

  • gaagit add all
  • gdcagit diff --cached
  • gpgit push
  • gpf! git push --force
  • grhhgit reset --hard
  • gstgit status

Вы также можете создать псевдоним для нескольких команд одновременно, добавив в файл .zshrc :

 function acp() { git add . git commit -m "$1" git push } 

Теперь, когда вы находитесь в git-репо, acp "a commit message" чтобы добавить все измененные файлы, зафиксировать их с любым указанным вами сообщением коммита, а затем отправить их на удаленный компьютер. Кредит на эту идею идет Али Спиттель .

8. Получите мгновенный отзыв о состоянии Git Repo

В верхней части статьи мы активировали тему под названием avit . В git-репо эта тема будет отображать название ветки, а также крестик или отметку, указывающую, все ли ветки обновлены. Мне нравится видеть эту информацию с первого взгляда, и это, безусловно, большой шаг вперед от необходимости постоянно вводить git status .

Однако есть несколько тем, которые отображают эту информацию более интуитивно. Мой любимый — Агностер . Давайте установим это сейчас.

Чтобы Agnoster правильно отображал стрелки и значки git, вам, вероятно, потребуется установить исправленный Powerline шрифт . Пользователи WSL могут сделать это, следуя инструкциям в разделе устранения неполадок выше. Для пользователей Mac и Linux инструкции по установке можно найти в репозитории проекта .

Пользователям Mac в High Sierra или более поздних версиях может потребоваться выполнить дополнительную работу для отображения этих шрифтов. Если вы не на каталине, этот метод рекомендуется . Пользователям Catalina нужно будет установить пропатченный шрифт и выбрать его в настройках своего терминала.

Чтобы проверить, может ли ваш терминал отображать все необходимые символы. выполните следующую команду:

 echo "\ue0b0 \u00b1 \ue0a0 \u27a6 \u2718 \u26a1 \u2699" 

Результат должен выглядеть так:

Шрифты Powerline, необходимые для темы Agnoster

После этого включите тему, изменив следующую строку в вашем файле .zshrc :

 ZSH_THEME="agnoster" 

и перезапустить терминал. Как только Agnoster будет запущен, у вас будет более интуитивное представление о состоянии любого git-репозитория. Вы также получите визуальную информацию о том, была ли предыдущая команда выполнена успешно или не выполнена, и работаете ли вы с повышенными привилегиями.

И работает с темой Agnoster

Подсказка Если вам не нравится часть приглашения user@host , вы можете DEFAULT_USER=your_user_name добавив DEFAULT_USER=your_user_name в файл .zshrc .

9. Плагины, плагины, плагины

Как уже упоминалось, Oh My Zsh поставляется с множеством плагинов . Вы действительно должны просмотреть их и потратить некоторое время на изучение тех, которые помогут вашему рабочему процессу. Чтобы начать, вот некоторые популярные из них:

  • cloudapp — загружает файлы и передаваемое содержимое в сервис Cloudapp. Выводит и копирует результирующий URL в буфер обмена.
  • command-not-found — если команда не распознана в $PATH , будет использоваться пакет Ubuntu command-not-found, чтобы найти его или предложить орфографические ошибки (только для Ubuntu и openSUSE).
  • node — откройте Node API для вашей текущей версии в вашем браузере.
  • npm — добавляет автозаполнение к npm.
  • sudo — нажатие ESC дважды ставит sudo перед текущей командой или последней, если командная строка пуста.
  • vscode — облегчает взаимодействие между командной строкой и редактором кода.

10. Ключевые комбинации

Это не специфический совет по zsh, но в заключение я хотел бы познакомить вас с этими пятью экономящими время комбинациями клавиш.

  • Ctrl + U — удалить от курсора до начала строки.
  • Ctrl + K — удалить от курсора до конца строки.
  • Ctrl + W — удалить от курсора до начала предыдущего слова.
  • Alt + D — удалить от курсора до конца следующего слова.
  • Ctrl + L — очистить терминал.

Если вы можете запомнить их, вы будете удивлены тем, как часто они пригодятся.

Вывод

В этом посте я продемонстрировал, как установить zsh и установить его в качестве оболочки по умолчанию. Я также показал, как получить максимальную отдачу от вашего нового терминала с помощью платформы Oh My Zsh. Я надеюсь, что если вы попробуете пару недель, вы удивитесь, как раньше обходились без них.

И не забывайте, если у вас есть какие-либо проблемы с этим, вы можете перейти на форумы SitePoint и попросить помощи там. Я также был бы рад услышать, пропустил ли я что-нибудь — например, вашу любимую тему, плагин, псевдоним или совет по производительности.

Вы можете найти меня на форуме или в твиттере .