Перейти к содержанию

tmux

Параметры для команд

  • -a, -b after/before для target
  • -d не переключаться в новое окно/панель, остаться в текущем
  • -n name
  • -h, -v — горизонтальное/вертикальное размещение (не разделение)

Размещение панелей

Параметры -h, -v указывают размещение панелей. Размещение не то же самое что разделение.

При горизонтальном размещении панели встают слева направо — горизонтально. При вертикальном размещении панели располагаются сверху вниз — вертикально.

Перемещение окон и панелей

target-window указывается в формате session:window.

target-pane указывается в формате session:window.pane. Если же символы : и . пропущены, то значение будет считаться индексом панели в окне.

tmux не умеет перемещать окна и панели с автоматическим сдвигом остальных окон/панелей. Команда swap-... меняет местами. Команда move-window перемещает окно в незанятый индекс. Если же вызвать move-window -k — то если целевое окно существует — tmux его уничтожит.

Перемещение окон

# переместить окно чтоб оно стало 3-им по индексу, остаться в окне
swap-window -d -t:3

# поменяться местами с предыдущим окном
swap-window -d -t:-1

Перемещение панелей

Для пемещения панелей есть только swap-pane — команда меняет панели местами. Она не умеет перетаскивать панель с автоматическим сдвигом остальных панелей.

  • swap-pane — меняет панели местами.
# поменяться местами с предыдущей панелью
swap-pane -U

# переместить в окно #1
move-pane -h -t:1
# переместить в предыдущее окно
move-pane -h -t:-1
# переместить в следующее окно, вставить между первой и второй панелью
move-pane -h -t:+1.1

# Переместить панель в новое (несуществующее) окно
break-pane -n newWindow

Некоторые команды

  • select-pane -T newTitle — переименовать заголовок панели. Отображается в статус баре
  • run-shell — вызов команды в shell

Показ display menu

tmux позволяет вызывать своё меню с возможностью выбора пунктов, на каждый пункт навешивать свои команды.

Пункты описываются в виде: {пункт} {клавиша} {команда}

  • пункт — отображаемый текст в пункте меню
  • клавиша — быстрая клавиша для выбора пункта. Можно выбирать так же стрелками и Enter'ом
  • команда — команда либо набор tmux команд, разделённых точкой с запятой, которые будут выполнены

Можно указывать несколько команд

display-menu 'Пункт 1' q 'команда 1' 'Пункт 2' w 'команда 2'
Если указать пустой пункт, то выведется разделительная линия
display-menu  \
  'Пункт 1' q 'команда 1' \
  '' \
  'Пункт 2' w 'команда 2'

Параметры:

  • -T — отображаемый заголовок окна

Пример. Назначим клавишу Q (в верхнем регистре) для вызова меню выбора преднастроенных раскладок

~/.tmux.conf
bind-key Q \
  display-menu -T 'Предзаготовленные раскладки' \
    'my-site layout'  e  'new-window  -b -c /hdd/sites/my-site  -n my-site' \
    'elk layout'      q  'new-window  -a -n elk -c /hdd/docker/elk; split-window -h -d -c /hdd/docker/elk/logstash; split-window -v -d -c /hdd/docker/elk/elastic' \
Нажатие ctrl b Q вызовет показ нашего меню

Вызов команд через display-menu с выводом результата в отдельное окно

С помощью display-popup можно вызывать shell команды с выводом результата во всплывающее окно. В зависимости от версии tmux для display-popup доступен параметр -T, с помощью которого можно установить заголовок для всплывающего окна

~/.tmux.conf
bind-key R \
  display-menu \
    'list'  l 'display-popup "ls -l"' \
    'build' b 'display-popup "docker compose -f /opt/my-project/docker-compose.yml up -d"'