Zsh + Oh My Zsh + Spaceship prompt
Terminal — це така частина вашої операційної системи, про наявність якої багато хто з пересічних користувачів навіть не здогадується. Однак, якщо ви розробляєте, розгортаєте локально чи віддалено, програмне забезпечення, Terminal стає вашим повсякденним інструментом. Правильне налаштування інструменту допомагає вам виконувати роботу швидше та якісніше.
Тут я хочу поділитись своїми налаштуваннями, щоб в майбутньому самому швидше виконати налаштування на новій системі, а також допомогти вам зробити це самотужки.
- Zsh — Z shell, є типовим в багатьох Linux збірках та в macOS
- Oh-My-Zsh — інструмент, який дозволяє вам керувати налаштуваннями Zsh в зручний спосіб.
- Spaceship prompt — запрошення командного рядка для будь-якого шелу, що гнучко налаштовується!
Сподіваюсь ви встановили собі Homebrew — зручний менеджер керування застосунками для macOS. Користувачі Linux мають такі менеджери «із коробки».
Встановлення / оновлення Zsh
Спочатку встановимо (оновимо) Zsh.
brew install zsh
Або оновимо, за потреби
brew upgrade zsh
Якщо ваш стандартний шел був іншим замініть його
chsh -s $(which zsh)
та перезавантажте шел, щоб зміни вступили в дію
source ~/.zshrc
Ви можете вийти з термінала ⌘+Q та запустити його знову.
Перевірте що ви тепер використовуєте саме Zsh
echo $0
Бачимо, що Zsh є також в заголовку вікна термінала. Команда which zsh
показує шлях до місця розташування виконавчого файлу; where zsh
— де знаходяться всі варіанти Zsh.
Встановлюємо Oh My Zsh
Після оновлення Zsh перейдемо до встановлення Oh My Zsh. Oh My Zsh дозволяє створити шаблон файлу налаштувань .zshrc
для Zsh.
https://ohmyz.sh/#install – містить інструкції щодо встановлення.
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
Якщо у вас, як у мене досі не має wget
, встановіть його
brew install wget
Після встановлення Oh My Zsh запрошення командного рядка змініться і стане зеленою тильдою «~
». Oh My Zsh надасть вам шаблон файлу налаштувань .zshrc
, де ви можете налаштувати поведінку Zsh, увімкнути додаткові втулки та налаштувати вигляд запрошення командного рядка.
Налаштування ~/.zshrc
Налаштуємо шляхи $PATH
export PATH=$HOME/bin:/usr/local/bin:/usr/local/sbin:$PATH
Додамо автодоповнення для команд. Встановимо zsh-completion
.
brew install zsh-completion
Відповідно до порад додамо наступний код до ~/.zshrc
, щоб увімкнути автодоповнення команд в терміналі.
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi
Виконаємо примусове перебудування zcompdump
.
rm -f ~/.zcompdump; compinit
Однак маємо проблему при спробі завантажити код для автодоповнення команд "zsh compinit: insecure directories"
, виконаємо команду з настанов встановлювача:
chmod -R go-w '/opt/homebrew/share/zsh'
Але все одно при спробі ініціалізації автодоповнювача отримуємо повідомлення про недостатні повноваження
для надання відповідних дозволів виконаємо команду
compaudit | xargs chmod g-w, o-w
та перезавантажимо ~/.zshrc
. Тепер здається все працює так, як очікувалось, принаймні у нас немає повідомлень про помилку чи відсутність дозволів.
Додамо автозавершення команд для Homebrew
if type brew &>/dev/null
then
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
autoload -Uz compinit
compinit
fi
Ось так це виглядає у ~/.zshrc
.
Для налаштування автодоповнення для інших команд знайдіть їх через
brew search completion
та виконайте рекомендації по їх додаванню до ~/.zshrc
.
Додайте інші налаштування шляхів для Ruby, Python, Java, nvm та інше до секції ініціалізації Oh My Zsh.
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
Підсвічування синтаксису
Встановимо pygments
для підсвічування синтаксису командою
brew install pygments
та додамо в ~/.zshrc
ZSH_COLORIZE_TOOL=pygmentize
ZSH_COLORIZE_STYLE="default"
перед секцією додавання втулків.
Втулки
Для додавання додаткових можливостей в Oh My Zsh передбачено використання втулків. Мій вибір:
plugins=(
git
nvm
colored-man-pages
colorize
zsh-syntax-highlighting
zsh-autosuggestions
zsh-aliases-lsd
)
Для colorize
ми встановили pygments
, а для zsh-aliases-lsd
встановимо
-
lsd
– це заміна стандартної командиls
, що дозволяє кольоровий вивід, значки для файлів та тек та інше, докладніше – https://github.com/Peltoche/lsd.brew install lsd
Додамо втулок до Oh My Zsh
git clone https://github.com/yuhonas/zsh-aliases-lsd.git \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-aliases-lsd
-
zsh-syntax-highlighting
– надає підсвітку синтаксису.Встановлення
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
-
zsh-autosuggestions
– дає підказки під час вводу команд, що значно спрощує їх ввід.git clone https://github.com/zsh-users/zsh-autosuggestions \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Ви завжди можете додати потрібні вам втулки, перелік яких є у https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins, або ж ви можете пошукати сторонні втулки та додати їх.
Spaceship
Налаштуємо запрошення командного рядка. Докладні інструкції див https://spaceship-prompt.sh/getting-started/#installing
Клонуємо код до теки з власними темами
git clone https://github.com/spaceship-prompt/spaceship-prompt.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/spaceship-prompt --depth=1
Створюємо символічне посилання
ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" \
"$ZSH_CUSTOM/themes/spaceship.zsh-theme"
До ~/.zshrc
додаємо
ZSH_THEME="spaceship"
SPACESHIP_DIR_TRUNC_REPO=false
Шрифт
Встановимо шрифт
brew tap homebrew/cask-fonts
brew install font-hack-nerd-font
та додамо його в налаштуваннях термінала
Тепер маємо такий вигляд запрошення командного рядка в терміналі, який з першого погляду дасть вам знати в якій гілці репозиторію ви зараз та чи є там зміни, які треба синхронізувати з віддаленим репо.
Власний профіль термінала
Ви можете обрати один з запропонованих профілів вигляду термінала – ⌘+I, я надаю перевагу профілю – Toy Chest. Отримати його можна за посиланням – https://github.com/JacksonGariety/toy-chest-theme.
Завантажимо собі файл з налаштуваннями для термінала – https://github.com/JacksonGariety/toy-chest-theme/blob/master/themes/Terminal/ToyChest.terminal та імпортуємо його в термінал та зробимо його стандартним для всіх нових сесій.
Тепер я маю термінал, який відповідає моїм потребам.
PS. Маленький додатковий штрих, щоб мати підсвічування синтаксису у vim, відкриємо (створимо) файл налаштувань ~/.vimrc
vim ~/.vimrc
та додамо до нього наступне
filetype plugin indent on
syntax on
На виході маємо підсвічування синтаксису у vim.