tmux
tmux (terminal multiplexer (терминальный мультиплексор)) программа позволяющая создать несколько терминалов (или окон), в каждом из которых можно запустить отдельно программу. tmux может быть отсоединен от экрана и продолжать работать в фоновом режиме, а затем снова быть соединенным.[1] Пользователи, знаокмые со Screen могут найти tmux хорошей ему альтернативой.
Users familiar with GNU Screen may find tmux as a suitable alternative.
Установка
USE-флаги
USE flags for app-misc/tmux Terminal multiplexer
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
jemalloc
|
Use dev-libs/jemalloc for memory management |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
utempter
|
Include libutempter support |
vim-syntax
|
Pulls in related vim syntax scripts |
Emerge
Установите app-misc/tmux:
root #
emerge --ask app-misc/tmux
Конфигурация
Стандартная установка tmux не устанавливает системный файл конфигурации (/etc/tmux.conf) или файл конфигурации для пользователя (~/.tmux.conf). Примеры файлов конфигурации находятся в каталоге /usr/share/doc/tmux-2.0/examples и могут быть скопированы как системные файлы конфигурации, так и как файлы конфигурации пользователя и отредактированы как необходимо с помощью текстового редактора.
Configuration Files
- /etc/tmux.conf — the system-wide configuration file.
- $XDG_CONFIG_HOME/tmux/tmux.conf — The user specific tmux configuration file.
- ~/.tmux.conf — The legacy single-user tmux configuration file location.
Пример файла конфигурации
set -g default-terminal "screen-256color" # Use 256 colors
set -g status-utf8 on # Enable utf-8
set -g history-limit 100000 # Scrollback buffer number of lines
# Start window indexing at one instead of zero
set -g base-index 1
# Set the prefix key and some key bindings to match GNU Screen
set -g prefix C-a
bind-key C-a last-window
# Key bindings for horizontal and vertical panes
unbind %
bind | split-window -h
bind - split-window -v
# Enable window titles
#set -g set-titles on
# Window title string (uses statusbar variables)
set -g set-titles-string '#T'
# Status bar with load and time
set -g status-bg '#4e4e4e'
set -g status-fg '#ffffff'
set -g status-left ' '
set -g status-right '#[bg=#bbbbbb]#[fg=#000000]#(cut -d " " -f -3 /proc/loadavg) #[bg=#4e4e4e]#[fg=#ffffff]#(
date +" %H:%M ")'
set -g window-status-format '#I #W'
set -g window-status-current-format ' #I #W '
setw -g window-status-current-bg '#55ff55'
setw -g window-status-current-fg '#000000'
# Pane border colors
set -g pane-active-border-fg '#bbbbbb'
set -g pane-border-fg '#555555'
# Bind to reload config
bind r source-file ~/.tmux.conf
- Match session numbers to number row
set -g base-index 1
- Set TERM, the default is "screen", "screen-256color" can be tried if "tmux-256color" doesn't work.
set -g default-terminal "tmux-256color"
- Set prefix to 'a' with ctl-a > a to send ctrl-a to the terminal
- set -g prefix C-a
- bind-key a send-prefix
- Set prefix2 to the default 'b'
- set -g prefix2 C-b
- Enable mouse
set -g mouse on
- Disable drag action in normal mode if your pointer causes problems with
unbind -n MouseDrag1Pane
- Also disable in copy mode
- unbind -Tcopy-mode MouseDrag1Pane
- Set the bar and inactive borders to blue, highlighting current in green.
- set-option -g status-style fg=black,bg=blue
- set-window-option -g window-status-current-style bg=green
- set-option -g pane-border-style fg=blue
- set-option -g pane-active-border-style fg=green
}}
To reload the configuration file from a terminal run:
user $
tmux source-file ~/.tmux.conf
Alternatively, modifications to the file can be loaded from within tmux via:
:
source-file ~/.tmux.conf
Automatic connection
Running tmux with exec and the -ADX
options will cause tmux to replace the current shell and create a session, or if one exists connect to it and both detach and exit the other client. This provides a very consistent way of working with remote sessions, and it can be run automatically:
Bash
user $
test -n "$PS1" && test -z "$TMUX" -a -n "$SSH_TTY" && exec tmux new -ADX
Fish
user $
status is-interactive ; and test -z "$TMUX" -a -n "$SSH_TTY" ; and exec tmux new -ADX
Расширения
Для tmux доступно некоторое количество плагинов. См. разделы ниже.
tpm
tpm is a tmux plugin manager. See the tpm sub-article for more details on the installation process.
tmux-mem-cpu-load
tmux-mem-cpu-load -- небольшая программа для мониторинга системной активности в статусной строке tmux. См. раздел tmux-mem-cpu-load для большей информации о процессе установки и настройки.
Tmux повторное использование
tmux-resurrect восстанавливает окружение tmux после перезагрузок системы. О процессе установки можно посмотреть в статье resurrect.
Использование
функциональные комбинации клавиш
tmux может управляться из присоединенного клиента посредством клавиатурных комбинаций системная кнопка с нажатой клавишей (Ctrl+b по умолчанию) за которой следует нажатие коммандной кнопки.
После нажатия Ctrl+B следующие клавиатурные комбинации могут быть использованы:
Общие комбинации
- ? = Показать все клавиатурные комбинации.
- d = Отсоеденить текущий клиент.
- : = Перейти к командной строке tmux
Создание и управление окнами
- c = Создать новое окно
- n = Перейти к следующему окну.
- p = Перейти к предыдущему окну.
- l = Перейти к предыдущему выбранному окну.
- 0-9 = Выбрать окна от 0 до 9.
- ' = Перейти к выбору индекса окна. Потом необходимо ввести номер о название чтобы перейти к соответствующему окну.
- , = Переименовать текущее окно.
- w = Выбрать окно в интерактивном режиме.
- :, then type list-windows enter = Display the list of windows.
Создание и управление панелями
- " = Разделить текущую панель на две, верхную и нижнию.
- % = Разделить текущую панель на две, левую и правую.
- o = Выбрать следующую панель отображаемую в данном окне.
- ; = Перейти в предыдущей активной панели
- { = Поменять местами текущую панель с предыдущей
- } = Поменять местами текущую панель со следующей панелью.
- Ctrl+o = Rotate the panes in the current window forwards. * Alt+1 to Alt+5 = Arrange panes in one of the five preset layouts: even-horizontal, even-vertical, main-horizontal, main-vertical, or tiled. * x = Kill the current pane. * ! = Break the current pane out of the window
Операции копирования, вставки и прокрутка
Доступные "горячие клавиши" зависят от того, выбран режим emacs (по умолчанию) или vi. Параметр mode-keys можно задать в .tmux.conf для режима vi.
- [ = Войти в режим копирования, чтобы скопировать текст или просмотреть историю.
- ] = Вставить последний скопированный в буфер текст.
- # = Список всех буферов вставки.
- - = Удалить последний скопированный текстовый буфер.
Управление сессией
Запуск сессии
После запуска tmux создает сокет сессии в /tmp/S-<UID>/<Session Name>
tmux может быть запущен следующей командой:
user $
tmux
Или, чтобы указать имя сессии при старте, выполните:
user $
tmux new-session -s portage
Информация о сессиях
Список tmux сессий для просмотра существующей информации о сессии:
user $
tmux ls
0: 1 windows (created Thu Apr 9 09:09:03 2015) [180x65] (attached)
При перечислении сессий, имя сессии должно отображаться как первый элемент в строке информации о сессии. Из выходных данных выше можно увидеть, что сессия была создана без имени, поэтому на сессию следует ссылаться как на 0
.
Другой способ перечислить сессии - это ввести длинный аргумент list-sessions
.
user $
tmux list-sessions
0: 1 windows (created Thu Apr 9 09:09:03 2015) [180x65] (attached)
Отобразится тот же результат, что и в предыдущей команде.
Переименование сессии
Простое использование tmux для запуска сеанса не предоставит сессию с удобным и понятным для человека именем.
Если имя сессии по умолчанию недостаточно описательно (0
, как правило, не описывает много), то её можно переименовать. Предположим, что Ларри-корова запустил tmux без указания имени сессии при запуске. Он начинает работу над компиляцией новой версии Portage и хочет изменить имя сессии в соответствии с текущей задачей. Чтобы изменить имя сессии, он сначала возьмет на себя управление tmux, нажав "магическую клавишу": Ctrl+b, затем :, которая переместит фокус в строку управления tmux. По умолчанию она должна стать желтой. Там он может набрать:
:
rename-session -t 0 portage
Где 0
действующее (по умолчанию) имя сессии, а portage
- это новое имя сессии. Чтобы переименовать при отсоединении от сессии tmux:
user $
tmux rename-session -t 0 portage
Продолжение сессии
После отсоединения сессии все активные терминалы остаются активными, а также команды, которые еще не завершились. Чтобы возобновить сессию используйте attach -t <session_name>
.
user $
tmux a -t portage
Или используйте длинный способ присоединения к существующей сессии:
user $
tmux attach -t portage
Демон-подобная операция
Чтобы запустить команду в сессии tmux без присоединения к сессии (как демон), используйте new-session -d
, а затем команду для выполнения в апострофах:
user $
tmux new-session -d 'emerge -uDNvp @world'
Смотрите также
- Screen — альтернатива tmux.
Внешние ресурсы
- Прекрасный учебник по tmux.
- The Tao of tmux, ebook от Tony Narlock, создателя libtmux и tmuxp.