Настраиваем zsh для улучшения жизни программиста в консоли

Консоль это одна из тех вещей где я провожу большую часть своего времени во время разработки приложений. Поэтому хочется удобств работы с ней а не скучный антрацитово-черный экран с мигающим зеленым курсором. А ведь выход есть! С тех пор как я перешел с bash на zsh я стал счастливее, а разработка превратилась в одно удовольствие!

Давайте посмотрим несколько скриншотов моей консоли, а далее я расскажу как установить и настроить такое же окружение.

Тут запущен tmux и zsh. Tmux удобен тем, что можно создавать неограниченное количество разделяемых областей в консоли и быстро переключаться между ними. Так же внизу видна панелька, которая отображает данные а моем компьютере, внешний и внутренний IP адреса, а так же время и текущий запущенный процесс.

Вот к примеру tmux с разделенными на две части слоями, где запущен mc. Разделить область на две части по вертикали очень легко, достаточно нажать комбинацию Ctrl+b+% переключаться между областями можно клвишами Ctrl+b+вверх, вниз, итд.

Zsh и tmux с запущенным редактором vim. Его я так же настраивал под себя. Если кого интересует мои настройки можно слить по ссылке github.com/aliev/.vim там же инструкция по установке. Конфигурацию вима на гитхабе я обновляю довольно часто, ввожу улучшения и добавляю новый функционал.

При переходе в дирректорию которая является репозиторием git, zsh сообщает вам об этом в промте любезно отображая текущую ветку с которой вы работаете.

Я очень люблю вим, поэтому очень привык к его кейбиндингу. К счастью в консоли можно настроить vi-like кей биндинг и использовать комбинацию клавишей vim, фактически работая с консолью как с вимом. Одно неудобно непонятно когда вы работаете в режиме командном или в режиме редактирования. Для этого нашел небольшую настройку для zsh, которая отображает текущий режим ввода:

Так же в zsh есть свой очень удобный автокомплит.

Настройка zsh

Для установки вышеописанных настроек zsh достаточно воспользоваться командой:

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

Настройки хранятся в файле ~/.zshrc. Что бы включить vim mode вставляем следующие строчки в конец этого файла:
bindkey -v
 
vim_ins_mode="%{[mathjax:inline fg[cyan]%}[INS]%{]reset_color%}"
vim_cmd_mode="%{[mathjax:inline fg[green]%}[CMD]%{]reset_color%}"
vim_mode=[mathjax:inline vim_ins_mode
 
function zle-keymap-select {
  vim_mode="]{[mathjax:inline {KEYMAP/vicmd/]{vim_cmd_mode}}/(main|viins)/[mathjax:inline {vim_ins_mode}}"
  zle reset-prompt
}
zle -N zle-keymap-select
 
function zle-line-finish {
  vim_mode=]vim_ins_mode
}
zle -N zle-line-finish
 
RPROMPT='${vim_mode}'

Настройка tmux

Для tmux существует отличный статус-бар, который называется tmux powerline. Выглядит он так:

Что бы установить панель создайте в домашней директории директорию и любым названием, например tmux-powerline и выполните следующие команды:

cd ~/tmux-powerline
git clone git://github.com/erikw/tmux-powerline.git

В файл ~/.tmux.conf добавьте следующие строчки предварительно отредактировав их:
set-option -g status on
set-option -g status-interval 2
set-option -g status-utf8 on
set-option -g status-justify "centre"
set-option -g status-left-length 60
set-option -g status-right-length 90
set-option -g status-left "#(~/tmux-powerline/powerline.sh left)"
set-option -g status-right "#(~/tmux-powerline/powerline.sh right)"

Затем запустите команду tmux. Если на панели ничего не отобразиться попробуйте запустить tmux source-file ~/.tmux.conf