tmux
— это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Аналог screen
.
Управление осуществляется через модификатор. По-умолчанию это: Ctrl+b
, много где пишут сокращённо: C-b
. Нажимается модификатор, а потом нужная комбинация.
Ctrl+b % | Вертикальное разбиение |
---|---|
Ctrl+b " | Горизонтальное разбиение |
Ctrl+b Space | 4 предустановки (по очереди) |
Ctrl+b стрелка | перейти на панель, находящуюся в стороне, куда указывает стрелка |
Ctrl+b Ctrl+стрелка | изменить размер текущей панели |
Ctrl+b o | перейти на следующую панель |
Ctrl+b ; | переключаться между текущей и предыдущей панелью |
Ctrl+b x | закрыть текущую панель |
Ctrl+b c | Новое окно |
---|---|
Ctrl+b 0…9 | Перейти в окно |
Ctrl+b w | Посмотреть окна |
Ctrl+b , | переименовать текущее окно |
Ctrl+b s | список рабочих сессий |
---|---|
Ctrl+b d | отключится от текущей сессии |
Ctrl+d | отключение |
Ctrl+b
w
или Ctrl+b
s
.Ctrl+b
Ctrl+x
.Ctrl+b t | часы |
---|---|
Ctrl+b ? | Справка по горячим клавишам |
Ctrl+b [ | войти в режим копирования space – выделение; Enter – копирование |
---|---|
Ctrl+b ] | вставить из внутреннего буфера обмена tmux |
Если вы хотите иметь возможность скопировать в системный буфер обмена, перед тем как выполнять действия мышкой зажмите Shift
.
Кроме того, в tmux есть управление копированием и вставкой с помощью клавиш.
Ctrl+b
[
либо Ctrl+b
PageUp
— для перехода в режим копирования
.space
— для начала выделения. Где-то написано: Ctrl+пробел
Enter
— для копирования. Где-то написано: Ctrl+w
PageUp
/ PageDown
— для прокрутки.q
или Esc
— для выхода из режима копирования
.Ctrl+b
]
— вставить текст из внутреннего буфера обмена.Команды tmux для управления сессиями, которые вы можете использовать:
tmux attach || tmux new
Сперва попытаться подключиться к уже существующему сеансу tmux, если он существует, а если такого ещё нет — создаёте новый.
Чтобы автоматически запускать tmux
, отредактируйте ~./bashrc
.
################################################################################ #tmux on start P_NAME="$(ps -o comm= $PPID)"; # Название проги, запустившей терминал: $P_NAME if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then # SSH TMUX_SESSION="$P_NAME" tmux attach-session -t "$TMUX_SESSION" || tmux new-session -s "$TMUX_SESSION" || tmux || vim && exit elif [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ "$EUID" -ne 0 ]]; then # not root TMUX_SESSION="$P_NAME" #tmux at || tmux && exit tmux attach-session -t "$TMUX_SESSION" || tmux new-session -s "$TMUX_SESSION" || tmux || vim && exit fi [[ -n "$TMUX" ]] && tmux ls # Вывод списка сессий ################################################################################
[ -z «$TMUX» ]
— если сессия tmux
[ -n «$SSH_TTY» ]
— если SSH
[ «$EUID» -ne 0 ]
— если не root
.[ $- =~ i ]
– test for interactive terminal to allow tools like Ansible to work.
Для запуска tmux
на удаленном сервере при входе в систему через SSH (и только SSH
):
Необходимо проверять $SSH_TTY
вместо $SSH_CONNECTION
, что бы работал SFTP
.
~/.tmux.conf
Статус бар в tmux
делится на две части: левую, и правую. В каждую из частей можно вывести желаемую информацию. Формат довольно простой. Используются специальные символы:
#(shell-command)
- Любая внешняя команда#[attributes]
- Изменение цвета, или атрибута статус бара#H
- Имя хоста локального компьютера#F
- Текущий флаг окна#I
- номер текущего (активного) окна#P
- Список всех фреймов#S
- Имя сессии#T
- Заголовок текущего окна#W
- Имя текущего окна##
- Символ решётка - ‘#’
Нюанс конфигурации — префих по-умолчанию стандартный: C-b
(Ctrl+b
), но если определяется, что работа идёт через SSH ($SSH_CLIENT
), то префикс меняется на C-a
(Ctrl+a
), также меняется цвет статусбара и справа проступает надпись C-a
.
Проверено на tmux 1.8 и tmux 2.1 .
############################################################################### ## (Re) Bind keys # Reload tmux config bind r source-file ~/.tmux.conf ############################################################################### ############################################################################### # Automatically set window title set-window-option -g automatic-rename on set-option -g set-titles on # set-option -g allow-rename off # prevent window-status-format show very long path set-option -g automatic-rename on set-window-option -g automatic-rename on # rename window to reflect current program ############################################################################### ## set the default TERM #set -g default-terminal "xterm" #set -g default-terminal screen-256color set -g default-terminal xterm set -g terminal-overrides 'xterm*:smcup@:rmcup@' set -g history-limit 10000 # #~ set-option -g default-command bash set-option -g default-command bash # set -g display-time 1500 # Время в миллисекундах, сколько будут отображаться сообщения (в статусбаре к примеру) # setw -g monitor-activity on ############################################################################### # If either of the VISUAL or EDITOR environment variables are set to something containing vi (such as vi, vim, nvi) when the tmux server is first started, both of these options are set to vi. set -g status-keys vi set -g mode-keys vi setw -g mode-keys vi ############################################################################### ## Мышь ## tmux 1.8 #set -g mouse-resize-pane on #set -g mouse-select-pane on #set -g mouse-select-window on #set -g mode-mouse on ## С версии 2.1 #setw -g mouse on set -g mouse on ############################################################################### ############################################################################### ## THEME - help ############################################################################### # https://github.com/jimeh/tmux-themepack ############################################################################### ## The colors available to tmux are: # * black, red, green, yellow, blue, magenta, cyan, white. # * bright colors, such as brightred, brightgreen, brightyellow, brightblue, brightmagenta, brightcyan. # * colour0 through colour255 from the 256-color set. # * default # * hexadecimal RGB code like #000000, #FFFFFF, similar to HTML colors. # # You can use [bg=color] and [fg=color] to adjust the text color and background within for status line text. This works on status-left and status-right. # Мои примечания: Для лучшей совместимости рекомендую использовать только основные 7 цветов, причём светлым по тёмному (желательно чёрному). # Для поддержки прозрачности термиинала, необходимо использовать bg=default ############################################################################### ## Задание опций # Глобальное: # set -g [имя] [значение] # Для окна - следующие две строчки равнозначны: # set-window-option -g window-* [зачение] # set -gw window-* [зачение] # Разобраться: помимо опций "g" и "w" есть "o" (кэширование?), "q" (значение?), "F" (распарсить q?) примеры: -goq; -gqF; -goqF; -gwF; # set, setw, set-option, set-window-option ############################################################################### ## Перечень основных элементов: #g display-panes-active-colour display-panes-colour #g message-command-style message-style #set -g status-utf8 on # tmux 1.8 #g status [on/off] status-interval [int] status-position [top/bottom] status-justify [centre] status-style #g status-left status-left-length [int] status-left-style #g status-right status-right-length [int] status-right-style #gw clock-mode-colour clock-mode-style [24] #gw mode-style #gw pane-active-border-style pane-border-style #gw ?? window-status-activity-style window-status-style #gw window-status-current-style window-status-current-format ["#I:#W#F"] window-status-format ["#I:#W#F"] window-status-separator ## Примечания: # Простые значения "-g" пишутся одним словом без ковычек. # У всего, что заканчивается на "*-style" и не только есть возможность его расписать цвета как 3 компонента: "*-fg"; "*-bg"; "*-attr" (dim, bright). Ну или как строку: "fg=[color], bg=[color], [attr]". При этом, опции "*-style" нет в tmux 1.8. # "*-length" означает не строго длину, а максимальную длину, int. ############################################################################### ## Пред-установленные значения, внутри кавычек, перед символ # # status # "#S" "#I" "#P" "#H" "%H:%M:%S" "%d-%b-%y" # window-status # "#I:#W#F" "#I:#W#F" # Вызов значения из bash: # '#(cut -d " " -f 1-3 /proc/loadavg)' '#(tmux ls|wc -l)' ############################################################################### ############################################################################### # THEME ############################################################################### ## Предустановки: # Настройки стутусбара #set -g status-utf8 on # tmux 1.8 set -g status on set -g status-interval 3 # sec set -g status-position bottom set -g status-justify centre set -g status-bg default # tmux 1.8-2.1 #~ set -g status-left "#[bg=yellow,fg=black]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[default]┇#I:#P┇" #~ set -g status-left "#[fg=yellow,bg=default]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[fg=white]┇#I:#P┇#[default]" set -g status-left "#[fg=yellow,bg=default]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[fg=white]┇#I:#P┇#[default]" set -g status-left-length 40 # max-size set -g status-left-bg black #~ set -g status-right "#[default]┇#[fg=yellow]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=black,bg=white,dim]%H:%M#[default]" #~ set -g status-right "#[fg=white]┇#[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=yellow,bg=default]%H:%M#[default]" set -g status-right "#[fg=white]┇#[fg=default]C-a┇#[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=yellow,bg=black]%H:%M#[default]" set -g status-right-length 40 # max-size set -g status-right-bg black set -gw window-status-activity-fg black # tmux 1.8-2.1 set -gw window-status-activity-bg white # tmux 1.8-2.1 set -gw window-status-fg green # tmux 1.8-2.1 set -gw window-status-bg white # tmux 1.8-2.1 set -gw window-status-current-fg white # tmux 1.8-2.1 set -gw window-status-current-bg green # tmux 1.8-2.1 set -gw window-status-current-attr bright # tmux 1.8-2.1 set -gw window-status-separator "┇" ############################################################################### ## local and remote sessions # if-shell "shell_command" "true" "false" if-shell "test -n '$SSH_CLIENT'" \ "set -g status-bg blue; set -g status-left-bg blue; set -g status-left-attr bright; set -g status-right-bg white; set -g status-right-fg brightred; set -g status-right-attr dim; unbind C-b; set -g prefix C-a; bind C-a send-prefix;" # Ctrl+a for Remote session, Ctrl+b (default) for local ###############################################################################