В течение некоторого времени я использую zsh в качестве оболочки Unix по умолчанию, которая представляет собой расширенную оболочку Bourne с множеством улучшений, включая некоторые функции из bash, ksh и tcsh. Одна из моих любимых раковин - это рыбья раковина. Его легко настроить, и многие из функций, которые я использую, предустановлены, поскольку он не поддерживается POSIX, он имеет легко читаемый (рыбный) синтаксис для написания сценариев.

Почему я перешел с рыбы на zsh и использовал Prezto вместо oh-my-zsh.

Последнее тоже может быть недостатком. Многие сценарии bash, с которыми я работаю, написаны на bash. Это означает, что fish не поддерживает весь синтаксис. По этой причине я стал искать альтернативу и быстро пришел к zsh (произносится как Z shell). Несмотря на то, что zsh не поддерживает POSIX по умолчанию, zsh позволяет имитировать POSIX.

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

Поэтому я искал альтернативу. Я быстро пришел к Презто. Как и Oh-My-Zsh, Prezto представляет собой платформу конфигурации для zsh. В нем есть автозаполнение, псевдонимы, функции и темы подсказок.

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

Я расскажу о следующем: как установить zsh и Prezto, полезные плагины, темы, такие функции, как псевдонимы и пользовательские функции.

Моя установка будет на macOS, но это не будет сильно отличаться, если вы пользователь Linux. Если вы работаете в Windows, все будет немного иначе. Если вы хотите узнать, как установить zsh и Prezto в Windows, дайте мне знать в комментариях, чтобы я мог добавить эти шаги позже.

TL; DR;

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

Установка

Если вы используете macOS Catalina или выше, то, возможно, слышали, что они заменили bash на zsh в качестве оболочки по умолчанию.

Беги, чтобы узнать, какая у тебя текущая оболочка

echo $SHELL

Если zsh не установлен, вы можете использовать Homebrew. Homebrew - менеджер пакетов для macOS. Для Linux вы можете использовать Snapcraft или Flatpak и Chocolatey для Windows. Перед продолжением убедитесь, что у вас установлен менеджер пакетов.

brew install zsh

Затем установите zsh в качестве оболочки по умолчанию:

chsh -s /bin/zsh

Zsh использует ~ / 5 файлов запуска. Они будут видны после установки Prezto.

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout

Со своего терминала вы можете вывести $ ZDOTDIR, чтобы узнать, к чему он относится. По умолчанию он относится к $ HOME.

  • .Zshenv используется каждый раз, когда вы запускаете zsh. Это для переменных вашей среды, таких как $ PATH, $ EDITOR, $ VISUAL, $ PAGER, $ LANG.
  • .Zprofile является альтернативой .zlogin, и эти два файла не предназначены для совместного использования.
  • В .zshrc мы добавляем наши псевдонимы, функции и другие настройки. В этом руководстве мы в основном обсудим файл .zshrc.
  • .Zlogin запускается, когда вы входите в свою оболочку, но после вашего .zshrc.
  • .Zlogout используется, когда вы закрываете оболочку.

Мы вернемся к .zshrc позже, а пока оставим как есть. Начнем с установки Prezto.

git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

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

setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

После того, как мы установили Prezto, вы найдете файл .zpreztorc в папке $ HOME рядом с файлами запуска zsh. Здесь мы редактируем наши параметры Prezto.

Плагины

Для установки плагинов в zsh нам понадобится менеджер плагинов, я предпочитаю zplug, но вы можете свободно использовать любой из других менеджеров плагинов. Zplug также позволяет без проблем устанавливать плагины Oh-My-Zsh.

Чтобы установить zplug, выполните следующее:

curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh

Мы будем устанавливать следующие

  • Git - библиотека автозавершения табуляции для Git
  • Osx - предоставляет несколько утилит для macOS
  • Автоматические предложения Zsh - быстрые / ненавязчивые автоматические предложения типа Fish для zsh.
  • Fasd - предлагает быстрый доступ к файлам и каталогам для оболочек POSIX
  • Enhancd - команда cd нового поколения с интерактивным фильтром
  • Fzf - универсальный инструмент нечеткого поиска из командной строки.
  • Lsdeluxe - раскрашивает вывод ls цветом и значками
  • Пряжа - добавляет общие псевдонимы и завершение для Менеджера пакетов пряжи
  • Powerlevel10k - тема Powerlevel10k для zsh с мастером настройки.

Это мои основные плагины, которые я использую, они будут разными для всех, поэтому найдите время, чтобы посмотреть, какие плагины вам подходят. Дополнительные плагины см. В разделе Потрясающие плагины для zsh.

Добавьте следующее в ваш файл ~ / .zshrc.

# Customize to your needs...
source ~/.zplug/init.zsh
# Plugins
zplug "plugins/git",   from:oh-my-zsh
zplug "plugins/osx",   from:oh-my-zsh
zplug "zsh-users/zsh-autosuggestions"
zplug "clvv/fasd"
zplug "b4b4r07/enhancd"
zplug "junegunn/fzf"
zplug "Peltoche/lsd"
zplug "g-plane/zsh-yarn-autocompletions"
zplug "romkatv/powerlevel10k", as:theme, depth:1

Затем запускаем:

source ~/.zshrc && zplug install

Добавить шрифт

Давайте начнем с установки шрифта Nerd, он обеспечит поддержку всех глифов и значков в нашей теме.

Перейдите к загрузкам на Веб-сайте шрифтов Nerd и загрузите шрифт по вашему выбору, я предпочитаю Hack.

Затем установите шрифт в своем терминале:

Добавление темы

Prezto стандартно поставляется с рядом тем, которые вы можете использовать. После того, как вы наберете prompt -l, вы увидите список доступных в настоящее время тем. Например, используйте prompt -s paradox, чтобы установить тему.

Если вас устраивает ваша тема, вы можете сохранить ее в своем файле .zpreztorc следующим образом. В данном случае мы выбираем powerlevel10k, возможно, одну из самых известных тем.

Чтобы настроить это, мы заходим в «themes» в нашем файле preztorc.

# Set the prompt theme to load.
# Setting it to 'random' loads a random theme.
# Auto set to 'off' on dumb terminals.
zstyle ':prezto:module:prompt' theme 'powerlevel10k'

Затем запустите мастер установки p10k, который вы запустите следующим образом:

p10k configure

После выполнения мастера установки ваш powerlevel10k будет установлен. Это мой результат

Псевдонимы

Плагин common alias дает нам доступ к списку псевдонимов, который мы можем использовать. Однако, если вы хотите добавить свои собственные псевдонимы, это можно сделать в вашем файле .zshrc.

Примеры конкретных псевдонимов

# Aliases
alias untar='tar -zxvf' # Unpack .tar file
alias wget='wget -c' # Download and resume
alias getpass='openssl rand -base64 20' # Generate password
alias sha='shasum -a 256' # Check shasum
alias ping='ping -c 5' # Limit ping to 5'
alias www='php -S localhost:8000' # Run local web server

Пользовательские функции

Для некоторых сложных команд псевдонима недостаточно, а длинные команды сложно поддерживать. Для этого мы можем использовать пользовательские функции. Есть несколько способов создать пользовательскую функцию в zsh. Приведу два наиболее распространенных примера.

Один из них - определить ваши функции в вашем ~ / .zshrc следующим образом:

# Custom functions
hello_world () {
    echo "Hello world"
}

После этого загрузите функцию с помощью исходной команды и запустите ее следующим образом.

source ~/.zshrc && hello_world

Второй способ - определить свои собственные функции.

Это позволит сохранить вашу конфигурацию zsh более организованной, а не помещать все в файл ~ / .zshrc.

Когда вы echo $ fpath в своей консоли, вы можете увидеть набор определяемых каталогов, которые содержат файлы, которые можно пометить для автоматической загрузки. Чтобы добавить папку в ваш $ fpath, нам нужно добавить следующее в ваш ~ / .zshrc.

fpath=( ~/.zfunc "${fpath[@]}" )

Затем мы проверяем, добавляется ли zfunc в $ fpath.

source ~/.zshrc && echo $fpath | grep -o zfunc

Наконец, нам нужно создать каталог ~ / .zfunc с файлом «hello» - вы можете называть его как хотите, но я предпочитаю именно так.

mkdir ~/.zfunc && touch ~/.zfunc/hello

В качестве примера я создал простую функцию приветствия.

hello () {
    echo "Hello $@"
}
hello

после того, как вам нужно отметить функцию для автоматической загрузки, опция U подавляет раскрытие псевдонима, а z означает использование zsh вместо стиля kash:

autoload -Uz hello

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

source ~/.zshrc/hello

После того, как вы сможете запустить:

hello John

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

Считали этот пост полезным? Пожалуйста, нажмите кнопку 👏 ниже! :)

Источники: