tmux

Очень хороший способ запустить tmux:

tmux attach || tmux new — делая так, вы сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует; если такого ещё нет — создаёте новый.

После этого вы попадаете в полноценную консоль.

Ctrl+b d — отключиться. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.)

В одной сессии может быть сколько угодно окошек:

Ctrl+b c — создать окошко;

Ctrl+b 0...9 — перейти в такое-то окошко;

Ctrl+b p — перейти в предыдущее окошко;

Ctrl+b n — перейти в следующее окошко;

Ctrl+b l — перейти в предыдущее активное окошко (из которого вы переключились в текущее);

Ctrl+b & — закрыть окошко (а можно просто набрать exit в терминале).

В одном окошке может быть много панелей:

Ctrl+b % — разделить текущую панель на две, по вертикали;

Ctrl+b " — разделить текущую панель на две, по горизонтали (это кавычка, которая около Enter, а не Shift+2);

Ctrl+b →←↑↓ — переходить между панелями;

Ctrl+b x — закрыть панель (а можно просто набрать exit в терминале).

Недостаток — непривычным становится скроллинг:

Ctrl+b PgUp — вход в «режим копирования», после чего:

PgUp, PgDown — скроллинг;

q — выход из «режима копирования».

tmux — консольный оконный менеджер, похожий на GNU Screen, но отличающийся от него рядом серьёзных усовершенствований.

Основные преимущества tmux в сравнении с GNU Screen:

Управление окнами

Очень похоже на то, как это сделано в screen.

ctrl-b c (tmux new-window)

создать новое окно

ctrl-b 0-9 (tmux select-window -t 

0-9)

перейти на окно с заданным номером

ctrl-b , (tmux rename-window)

переименовать текущее окно

ctrl-b n

перейти на следующее окно

ctrl-b f

найти окно по имени

ctrl-b w

выбрать окно в меню

Управление панелями

tmux split-window (prefix + ")

разбить по вертикали

tmux split-window -h (prefix + %)

разбить по горизонтали

tmux swap-pane -[UDLR] (prefix + { or }, prefix + стрелки)

поменять текущую панель с другой, по указанному направлению

tmux select-pane -[UDLR]

перейти на панель в указанном направлении

tmux select-pane -t :.+

перейти на следующую панель

(prefix SPACE)

циклически менять расположение панелей (even-horizontal, even-vertical, main-horizontal, main-vertical, tiled)

(prefix !)

перенести текущую панель на новое окно

.tmux.conf

Удобные настройки (особенно при переходе со Screen), добавляются в ~/.tmux.conf:

# привязать главный префикс на ctrl-a, по умолчанию находится на ctrl-b set -g prefix C-a unbind C-b bind C-a send-prefix  # перечитать конфигурационный файл, c-a r unbind r bind r source-file ~/.tmux.conf  # перейти на другую панель c-a c-a unbind ^A bind ^A select-pane -t :.+

Возможности Screen не поддерживаемые в tmux

Функции, которые не поддерживает tmux, но поддерживает screen:

Приятные дополнения и навороты

Как сделать максимизацию текущей панели?

В самом tmux такой возможности нет, но её легко реализовать самому [1]:

unbind + bind + new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \; swap-pane -s tmux-zoom.0 \; select-window -t tmux-zoom unbind - bind - last-window \; swap-pane -s tmux-zoom.0 \; kill-window -t tmux-zoom

Как включить прокрутку по shift pgup/pgdn?

Вообще прокрутка доступна по prefix [ или prefix pgup (автоматически включается режим прокрутки и прокручивается один экран), но если хочется именно по shift pgup/pgdown, то нужно добавить в tmux.conf [2]:

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

Как послать текст в окно tmux?

Использовать `send-keys`:

 tmux send-keys -t 0.2 'echo hi' Enter

Здесь мы посылаем в панель 2 окна 0 текст echo hi и нажимаем Enter.

Подробнее: [3].

Как копировать текст между окнами/буферами tmux?

setw -g mode-keys vi # vim-style movement # in normal tmux mode bind Escape copy-mode # `tmux prefix + Escape` starts copy mode. bind p paste-buffer # `prefix + p` pastes the latest buffer  # in copy mode… bind -t vi-copy v begin-selection # `v` begins a selection. (movement keys to select the desired bits) bind -t vi-copy y copy-selection # `y` copies the current selection to one of tmux's "paste buffers" bind -t vi-copy V rectangle-toggle # `V` changes between line- and columnwise selection  bind -t vi-copy Y copy-end-of-line # ^1 bind + delete-buffer

Управляющие клавиши:

#           List all paste buffers. -           Delete the most recently copied buffer of text. =           Choose which buffer to paste interactively from a list. [           Enter copy mode to copy text or view the history. ]           Paste the most recently copied buffer of text. 

Источник: Copy and Paste in `tmux`.

Дополнительная информация

Специальные вопросы: