# Tmux (Русский)

Tmux — терминальный мультиплексор берущий своё начало из мира BSD. Он позволяет создавать несколько терминалов (или окон), каждый из которых выполняет отдельную программу, а так же управлять этими терминалами на одном экране. tmux может быть отвязан от экрана и продолжать свою работу в фоновом режиме, а позже — привязан вновь. Он использует библиотеку ncurses.

Во многом, он похож на программу screen, но имеет некоторые отличия. (Кто сказал улучшения?) За более подробной информацией обращайтесь на официальный вебсайт.

## Установка

    # pacman -S tmux

## Настройка

Конфигурационные файлы размещены в директории `/usr/share/tmux/`. По умолчанию, клавишами перехода в режим управления являются C-b (где C- — клавиша "Ctrl").

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

    $ cp /usr/share/tmux/screen-keys.conf ~/.tmux.conf

Для управления настройками в рамках всей системы, поместите `tmux.conf` в директорию `/etc/`. Более подробная информация доступна в справочном материале по tmux:

    $ man tmux

Простой конфигупационный файл для примера:

    # клавиши перехода (как в screen)
    set -g prefix C-a
    bind C-a send-prefix

    # основные настройки
    set-window-option -g mode-keys vi # vi key
    set-option -g status-keys vi
    set-window-option -g utf8 on # поддержка utf-8
    set-window-option -g mode-mouse off # отключить "мышь"

    # режим копирования на клавише "Esc"
    unbind [
    bind Escape copy-mode

    # переместить буфер обмена tmux в буфер обмена X
    bind-key C-y save-buffer /tmp/tmux-buffer \; run-shell "cat /tmp/tmux-buffer | xclip"

    # разделение на панели и перемещение
    set-option -g mouse-select-pane off
    unbind %
    bind + split-window -h # horizontal split
    unbind '"'
    bind _ split-window -v # vertical split
    bind C-j previous-window
    bind C-k next-window

    # заголовок окна
    set-option -g set-titles on
    set-option -g set-titles-string '#S:#I.#P #W' # window number,program name,active (or not)
    set-window-option -g automatic-rename on # auto name

    # сообщения
    #set-window-option -g mode-bg magenta
    #set-window-option -g mode-fg black
    #set-option -g message-bg magenta
    #set-option -g message-fg black

    # отключить визуальную активность
    set -g visual-activity off
    set -g visual-bell off

    # следующее окно
    bind-key -n C-right next

    # предыдущее окно
    bind-key -n C-left prev

    # панель состояния
    set-option -g status-utf8 on
    set-option -g status-justify right
    set-option -g status-bg black
    set-option -g status-fg cyan
    set-option -g status-interval 5
    set-option -g status-left-length 30
    set-option -g status-left '#[fg=magenta]» #[fg=blue,bold]#T#[default]'
    set-option -g status-right '#[fg=cyan]»» #[fg=blue,bold]###S #[fg=magenta]%R %m-%d#(acpi | cut -d ',' -f 2)#[default]'
    set-option -g visual-activity on
    set-window-option -g monitor-activity on
    set-window-option -g window-status-current-fg white

    # часы
    set-window-option -g clock-mode-colour cyan
    set-window-option -g clock-mode-style 24

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

    ctrl+a, отпустите a (но продолжайте удерживать ctrl) и нажмите клавишу вправо/влево/вверх/вниз

Чтобы поменять панели местами:

    ctrl+a, отпустите a (но продолжайте удерживать ctrl) и нажмите o

Чтобы перейти по URL, который появляется в tmux (предполагается, что urlview установлен и настроен):

    bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e 'cat /tmp/tmux-buffer | urlview'"

## Основное управление окнами с настройками по умолчанию

Примечание Вы можете изменить сочетание клавиш Ctrl-b на Ctrl-a создав файо `~/.tmux.conf` и записав в него следующее:

    set -g prefix ^a

Запустите tmux командой `tmux`. Появится окно терминала и панель состояния.

    Ctrl-b c  создать новое окно
    Ctrl-b ,.  переименовать текущее окно — введите новое имя и нажмите Enter

Множество способов смены ококн:

    Ctrl-b n (Перейти к следующему окну)
    Ctrl-b p (Перейти к предыдущему окну)
    Ctrl-b l (Перейти к ранее выбранному окну)
    Ctrl-b w (Список всех окон / номеров окон)
    Ctrl-b <номер окна> (Перейти к окну с определённым номером от 0 до 9)

Что делать, если у вас открыто более десяти окон? В tmux есть опция поиска по окнам:

    Нажмите Ctrl-b f  и введите имя нужного окна

(так же можно использовать лишь часть имени окна для поиска).

## Основное управление панелями с настройками по умолчанию

    Ctrl-b %  (Разделить окно вертикально)
    Ctrl-b :  “split-window” (Разделить окно горизонтально)
    Ctrl-b o  (Перейти к следующей панели)
    Ctrl-b q  (Показать номера панелей, наберите номер на клавиатуре, чтобы перейти к соответствующей панели)
    Ctrl-b {  (Переместить текущую панель влево)
    Ctrl-b }  (Переместить текущую панель вправо)

## Инициализация сеансов

Можно настроить tmux таким образом, чтобы он запускался с предопределённым набором окон, добавив следующие команды в ваш `.tmux.conf`:

    new  -n WindowName Command
    neww -n WindowName Command
    neww -n WindowName Command

Чтобы запустить сеанс с разделёнными окнами (панелями), добавьте команду splitw после neww, таким образом:

    new  -s SessionName -n WindowName Command
    neww -n foo/bar foo
    splitw -v -p 50 -t 0 bar
    selectw -t 1
    selectp -t 0

откроет два окна, второе из которых будет называться foo/bar и будет разделено вертикально пополам с командой foo запущенной перед командой bar. Фокус будет передан второму окну(foo/bar), левой панели (foo).

Обратите внимание: Нумерация сеансов, окон и панелей начинается с нуля, если не указан параметр base-index со значением 1 в `.tmux.conf`

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

    # инициализация сеансов
    bind F source-file ~/.tmux/foo
    bind B source-file ~/.tmux/bar

## Проблемы с прокруткой

Если у вас проблемы с прокруткой клавишами Shift-PageUp/Shift-PageDown в терминале, попробуйте следующее:

    set -g terminal-overrides 'xterm*:smcup@:rmcup@'

## Дополнительные источники

- Ветка про Tmux на форумах Arch Linux (англ.)
- GNU Screen
- Tmux tutorial from OpenBSD FAQ (англ.)
- Tmux/Screen cheat sheet (англ.)
- Tmux tutorial (англ.)

Category:

- Utilities (Русский)