tmux — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне. wiki
Долго и продуктивно использовал screen но последнее время мне стало не хватать удобного переключения между вертикальным/горизонтальным расположением терминалов (сплиттинг) в отдельном окне и запуска определенных приложений при первом запуске screen. Если второе и решается, то для первого нужно пересобрать screen из репозитария screen и, насколько я знаю, screen разбивает на регионы всю свою область, а не отдельно для каждого окна (таба).
Одни поговаривают, что у tmux'a более читаемый конфиг чем у screen'а (большой разницы не заметил), а другие говорят что tmux меньше потребляет памяти, хотя это больше индивидульно, приведу свои замеры screen с 5 окнами отёл ~11 МБайт, а tmux - ~5.6 МБайт (запущены примерно одни и те жи приложения).
Сравнения screen vs tmux:
Среди других особенностей tmux'a выделяют
В репозитариях ubuntu доступна последняя версия (на данный момент 1.5)
sudo apt-get install tmux
Или можно собрать из исходников
sudo apt-get install libncurses5-dev binutils gcc gcc-4.4 libc-dev-bin libc6-dev libgomp1 libncurses5-dev
linux-libc-dev manpages-dev libevent-1.4-2 libevent-core-1.4-2 libevent-extra-1.4-2 libevent-dev checkinstall wget http://downloads.sourceforge.net/tmux/tmux-1.5.tar.gz tar xvvf tmux-1.5.tar.gz cd tmux/ ./configure --prefix=/usr make sudo checkinstall
При запуске с настройками по-умолчанию будет включена строка статуса (в screen'e её нет), префикс для комбинаций клавиш - ctrl+b (вместо ctrl+a как в screen). Сравнительную таблицу с комбинациями клавиш в tmux и screen можно посмотреть тут или список команд на русском для tmux тут. Для просмотра доступных клавиш из tmux'a нажмите ctrl+b ?.
В терминах tmux, сессия - это совокупность псевдо-терминалов, находящихся под управлением tmux''а. К каждой сессии привязаны одно или более окон, которое в свою очередь могут делиться на фреймы (регионы, слои, под окна - столько разных названий можно встретить на разных форумах/блогах/etc).
Список запущенных сессий можно просмотреть с помощью
tmux ls
Присоединиться к сессии с именем 0
tmux attach -t 0
Список всех поддерживаемых команд
tmux list-commands
Для конфигурирования tmux используется две команды:
tmux show-options -g
);tmux show-window-options -g
);Мой ~/.tmux.conf: префикс для клавишных комбинаций - ctrl+a, vi-подобное управление. Для разделения окна на два равных региона по вертикали использую ctrl+a+v, по горизонтали - ctrl+a+h, для циклического переключения по регионам - ctrl+a+o, смена расположения регионов - ctrl+a+Space, часы - ctrl+a+t.
Если в vim или другом приложении отображаются не правильно цвета, то добавим в ~/.zshrc (или ~/.bashrc) следующий алиас для принудительного использования 256 цветов:
alias tmux="tmux -2 -u"
Для запуск определенных приложений/действий при первом запуске tmux, напишем скрипт, который создает сессию с именем work (запускается в фоне (ключ -d)), с тремя окнами. В первом окне запускается top, во втором - переходим в директорию ~/projects/, а третье окно пустое. Принудительно активируем первое окно и активируем сессию work.
#!/bin/bash tmux new-session -d -s work tmux new-window -t work:1 tmux new-window -t work:2 tmux new-window -t work:3 tmux send-keys -t work:1 'top' C-m tmux send-keys -t work:2 'cd ~/projects/' C-m tmux select-window -t work:1 tmux -2 attach-session -t work
Еще одно удобство - запуск выше приведённого скрипта при первом запуске шела или присоединение к уже запущенной сессии. Для этого добавим в ~/.zshrc (или в ~/.bashrc)
if [ $TERM != "screen-256color" ] && [ $TERM != "screen" ]; then tmux attach -t work || ~/scripts/tmux_work.sh; exit fi
Для отсылки команд из vim в tmux есть плагин tslime, демонстрацию использования смотрим тут.
Обновить конфиг можно нажав ctrl+a :
и набрав source-file ~/.tmux.conf
.
Узнать текущий binding (emacs или vi) - tmux show-options -g | grep keys
.
Если используется zsh + tmux и перестал работать поиск по истории по ctrl+r
то добавляем в ~/.zshrc
export EDITOR=vi bindkey -e
Дополнительное чтиво