Источник: Nuances of Programming
Мой терминал настроен очень минималистично. Это просто черный ящик, который сообщает мне полезную информацию. Основное удобство в том, что каждый его аспект имеет собственный файл конфигурации — даже сам эмулятор терминала.
В этой статье я опишу настройку, которую оценят минималисты.
Содержание
· Настройка оболочки: zsh
· Настройка терминала: alacritty
· Настройка мультиплексора: tmux
· Заключение
1. Настройка оболочки: zsh
Не так давно я перешел на zsh только потому, что теперь он используется в macOS по умолчанию. Мне очень понравилось то, насколько легко сделать красивое и информативное диалоговое окно с помощью Oh My Zsh.
Установка Oh My Zsh
Для установки вставьте в терминал следующий код:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
По завершению будет создан файл конфигурации ~/.zshrc.
В этом файле есть множество настроек, которые можно активировать и отключать. Их мы здесь рассматривать не станем, так как они выходят за тему статьи.
В своем файле я сделал следующие изменения:
# Путь к месту установки oh-my-zsh export ZSH="/Users/gloege/.oh-my-zsh"
# Тема zsh: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes ZSH_THEME="agnoster"
# Плагины omz plugins=(web-search transfer osx tmux git)
# Открыть tmux при запуске, необходим плагин tmux ZSH_TMUX_AUTOSTART=true
# oh-my-zsh.sh берет все файлы *.zsh из $ZSH_CUSTOM/custom # - Я включаю: aliases.zsh, functions.zsh, prompt.zsh, ect. source $ZSH/oh-my-zsh.sh
# prompt.zsh аугментирует диалоговое окно agnoster, удаляет #user@hostname # должен запускаться в конце .zshrc . ${ZSH_CUSTOM}/prompt.zsh
Эта конфигурация вносит следующие изменения.
- Устанавливает ZSH_THEME как agnoster.
- Загружает плагины, включенные с Oh My Zsh.
- Автоматически запускает tmux.
Каждое из этих изменений описывается ниже.
Тема Oh My Zsh
Смена ZSH_THEME приведет к полному изменению внешнего вида диалогового окна. На выбор представлено огромное число разных тем. Можете посмотреть их на GitHub.
Я использую тему agnoster с удаленным username@hostname. Для этого приходится изменить prompt_context():
# Удаляет user@hostname из диалогового окна agnoster prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then prompt_segment black default "%(!.%{%F{yellow}%}.)" fi }
Чтобы сработало, этот код должен находиться в конце .zshrc.
Плагины Zsh
Oh My Zsh содержит кучу всяких плагинов для расширения терминала. Одна из их функций — предоставление полезных сокращений для часто используемых команд. Не все плагины загружаются по умолчанию, так как не все требуются для каждой конфигурации, а загрузка их чрезмерного количества просто излишне замедлит запуск.
Лично я загружаю следующие.
- git → предоставляет полезные сокращения команд git.
- tmux → позволяет tmux автоматически запускаться при открытии терминала.
- osx → удобные сокращения команд.
- web-search → позволяет использовать предпочтительный поисковый движок из командной строки, открывая его в браузере. Я им пользуюсь нечасто.
Автозапуск tmux
Плагин tmux предоставляет способ автозапуска tmux через добавление в .zshrc следующей строки:
# Открывает tmux при запуске, требует плагин tmux ZSH_TMUX_AUTOSTART=true
2. Настройка терминала: alacritty
Alacritty — это эмулятор терминала с GPU-ускорением, который отличается высокой скоростью, портативностью и удобством настройки. На момент написания alacritty находится на бета-стадии. Хотя за время использования я особых багов в нем не встречал.
Установка
На macOS можете установить его с помощью homebrew.
brew install alacritty
Здесь находятся инструкции для других операционных систем.
Developer not verified
Если возникает сообщение об ошибке “Developer not verified”, перейдите в /Applications, кликните правой кнопкой alacritty.app, а затем левой по open.
Файл конфигурации
Alacritty допускает очень широкую настройку, чем выгодно отличается от популярного эмулятора терминала iTerm2.
По умолчанию alacritty не создает этот файл. В macOS программа сначала ищет файл конфигурации в ~/.config/alacritty/alacritty.yml.
За вас она этот файл не создает, но ищет таковой по следующим путям:
- $XDG_CONFIG_HOME/alacritty/alacritty.yml;
- $XDG_CONFIG_HOME/alacritty.yml;
- $HOME/.config/alacritty/alacritty.yml;
- $HOME/.alacritty.yml.
В Windows файл конфигурации должен располагаться в:
%APPDATA%\alacritty\alacritty.yml
Вот мой файл alacritty.yml с комментариями:
Здесь мы затронули самую малость из всех доступных настроек alacritty. Со всеми ними можно ознакомиться на GitHub.
Из основного я меняю цветовую схему и шрифт.
Изменение цветовой схемы
Список доступных цветовых схем можно найти на GitHub. Просто измените часть конфигурации на предпочтительные настройки.
Изменение семейства шрифтов
Если вы используете тему zsh с powerlines, например agnoster, то вам потребуется шрифт powerline. Я предпочитаю Source Code Pro for Powerline.
Шрифты Powerline
Для установки следуйте инструкциям с GitHub.
3. Настройка мультиплексора: tmux
Мультиплексор важен при использовании alacritty, поскольку терминал не допускает применения вкладок, и вы даже не сможете открыть другое окно, не добавив привязку клавиши в файле конфигурации. Это вынуждает меня работать с множеством открытых окон, не имея панели вкладок, напоминающей браузер.
В случае с мультиплексорами есть два варианта: screen и tmux. Я склоняюсь к последнему. Однако некоторые из его начальных настроек, на мой взгляд, дурацкие.
Файл конфигурации tmux должен находиться здесь: ~/.tmux.conf.
Можете создать пустой файл, если такой еще не существует.
touch ~/.tmux.conf
Вот моя конфигурация .tmux.conf с комментариями:
# # На основе файлов конфигурации Хэма Вокке и milosz: # https://www.hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/ # https://sleeplessbeastie.eu/2016/08/22/how-to-create-basic-tmux-setup/ # # Последнее обновление: 2021-06-28 #
# Переназначение привязки клавиш с 'Ctrl-b' на 'Ctrl-a' unbind C-b
set-option -g prefix C-a bind-key C-a send-prefix
# Установка типа терминала по умолчанию set -g default-terminal "screen-256color"
# Извлечение конфигурации через C-a + r bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded"
# Открыть конфигурацию через C-a затем shift+M bind-key M split-window -h "vim ~/.tmux.conf"
# Активация режима с мышью (>tmux 2.1) # кликабельные окна, панели, при этом размер панелей можно менять set -g mouse on
# Начало отсчета окон и панелей с 1
set -g base-index 1
set-window-option -g pane-base-index 1
# Не переименовывать окна автоматически set-option -g allow-rename off
# Разделить панели вертикально с помощью |
# Разделить панели горизонтально с помощью - bind | split-window -h
bind - split-window -v
unbind '"' unbind %
# Выбор панелей в стиле Vim bind h select-pane -L
bind l select-pane -R
bind k select-pane -U
bind j select-pane -D
# Переключение панелей с помощью Alt-стрелка без приставки # M - это мета-клавиша, в macOS обычно alt bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Shift стрелка для смены окон bind -n S-Left previous-window
bind -n S-Right next-window
# Отключить все звуки колокольчика set -g visual-activity off
set -g visual-bell off
set -g visual-silence off
setw -g monitor-activity off
set -g bell-action none
# Панель состояния # цвета xterm : https://jonasjacek.github.io/colors/ # формат strftime : https://devhints.io/datetime set -g status-position bottom
set -g status-style 'bg=colour235 fg=colour255' set -g status-left " " set -g status-right "#[bg=colour235,fg=colour255] %a %b %e #[bg=colour235,fg=colour255] %H:%M:%S " set -g status-right-length 50
set -g status-left-length 50
# Цвета панелей set -g pane-border-style 'bg=default fg=colour19' set -g pane-active-border-style 'bg=default fg=colour172'
# Стилизация сообщений set -g message-style 'fg=colour255 bg=colour62'
tmux допускает очень много настроек.
Caps lock → control
В tmux клавишу Control мы используем часто. Она расположена в неудобном месте, поэтому я переназначил ее на Caps Lock. В MacOS это делается так.
- Открыть “System Preferences”.
- Кликнуть “Keyboard”.
- Кликнуть “Modifier Keys…” в правом нижнем углу.
- С помощью выпадающего окна переназначить “caps lock” на “control”.
Заключение
Эта конфигурация:
- минималистична;
- эстетически привлекательна;
- информативна, так как предоставляет всю необходимую информацию о состоянии;
- поддается настройке через файлы конфигурации.
Надеюсь, что на основе этого вы сможете самостоятельно освоить простую и минималистичную настройку терминала.
Читайте также:
Перевод статьи Luke Gloege, Ph.D.: A Minimal and Configurable Terminal Setup