user gravatar

Настройка Tmux + Vim для комфортной работы

Настройка tmux

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

А также нужно отметить, что tmux работает по модели клиент - сервер, это означает, что к tmux сессиям могут подключиться сразу несколько человек одновременно. В каких случаях это может понадобиться? Например, при командной разработке проекта.

Настройка tmux

Tmux vs screen

Кроме tmux есть конечно и другие мультиплексоры, такие как, например GNU screen. Если до этого вам приходилось работать с программой screen, то многие фичи вам могут показаться знакомыми и, возможно, вы уже задаете себе вопрос: в чем отличие?

Основные отличия tmux от screen

  1. Возможность разделения на панели (split windows). С этой фичей хорошо знакомы пользователи Vim, однажды взяв на вооружение, вы скорее всего больше не сможете без него.
  2. Клиент-серверная архитектура. Это тоже киллер фича, которая позволит вам в любой момент подключиться к серверу и продолжить работать в предыдущей tmux сессий.

Приступаем к настройке tmux

Первым делом давайте создадим файл настроек для tmux (если вы уже создали пропускайте эту часть).

touch ~/.tmux.conf

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

# перезагрузка конфигов
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"

Теперь после изменения настроек просто нажимаем префикс + r.

Если это ваше первое знакомство с tmux, для вас слово префикс скорее всего что-то новое. Итак, что такое префикс? Сессией tmux можно управлять с помощью комбинации префикс ключа и соответствующим ключом. По дефолту префикс ключом является комбинация клавиш Ctrl-b. Но эта комбинация немного неудобна (по крайней мере для меня), давайте-ка изменим его, добавив опять таки новую опцию в конфигурационный файл:

# Перебиндим C-b (если вы пользователь Vim, то это обязательно)
set -g prefix C-a
unbind C-b
bind C-a last-window

Заставим tmux вести себя как vim:

setw -g mode-keys vi
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection
unbind p
bind p paste-buffer

Навигация по сплит-окнам в стиле Vim:

bind h select-pane -L
bind k select-pane -U
bind l select-pane -R
bind j select-pane -D

Если иногда любите скроллить и осуществлять навигацию по сплит окнам с помощью мыши:

set -g mode-mouse on
setw -g mouse-select-window on
setw -g mouse-select-pane on

Ну а вот эта настройка заставит tmux включить 256 цветов:

set -g default-terminal "screen-256color"

Ну вот и все. Этого минимума пока что хватит. Что дальше:

  1. Почитайте man tmux
  2. Поищите на github-е чужие конфиги для tmux, почитайте и возьмите что понравится на вооружение.
  3. Почитайте и пойщите информацию о tmuxinator-е, скрипте, который поможет с легкостью управлять tmux сессиями.

Ну и напоследок, после этого видео станет намного понятнее что представляет собой мультиплексор tmux: