tmux

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


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

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

  • Ясная и прозрачная клиент-серверная модель (например, можно без проблем подключать разные окна к разным сеансам);
  • Простой интерфейс командной строки;
  • Единый синтаксис команд в конфигурационном файле, в командной строке оболочки и в командной строке tmux;
  • Простота написания скриптов;
  • Множество буферов вставки;
  • Комбинации клавиш vi/emacs;
  • Простой синтаксис командной строки, поддерживающий вывод внешних команд shell.

Содержание

[править] Управление окнами

Очень похоже на то, как это сделано в 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 })
поменять текущую панель с другой, по указанному направлению
tmux select-pane -[UDLR] (prefix + стрелки)
перейти на панель в указанном направлении
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 :.+

[править] Шпаргалка

  tmux [command]     # Run a command
                     # 'tmux' with no commands will create a new session

    new              # Create a new session
     -s "Session"    # Create named session
     -n "Window"     # Create named Window
     -c "/dir"       # Start in target directory

    attach           # Attach last/available session
     -t "#"          # Attach target session
     -d              # Detach the session from other instances

    ls               # Показать список открытых сессий
     -a              # Показать список всех открытых сессий

    lsw              # Показать список окон
     -a              # Показать список всех окон
     -s              # Показать список всех окон в текущей сессии

    lsp              # Показать список панеленй
     -a              # Показать список всех
     -s              # Показать список панелей в данной сессии
     -t              # Показать список панелей в указанной

    kill-window      # Убить текущее окно
     -t "#"          # Убить указанное окно
     -a              # Убить все окна
     -a -t "#"       # Убить все окна, кроме указанного

    kill-session     # Убить текущую сессию
     -t "#"          # Убить указанную сессию
     -a              # Убить все сессии
     -a -t "#"       # Убить все сессии, кроме указанной

Комбинации клавиш:

----------------------------------------------------------------------
  (C-b) = Ctrl + b    # 'Prefix' combination required to use keybinds

  (M-1) = Meta + 1 -or- Alt + 1
----------------------------------------------------------------------

  ?                  # List all key bindings
  :                  # Enter the tmux command prompt
  r                  # Force redraw of the attached client
  c                  # Create a new window

  !                  # Break the current pane out of the window.
  %                  # Split the current pane into two, left and right
  "                  # Split the current pane into two, top and bottom

  n                  # Change to the next window
  p                  # Change to the previous window
  {                  # Swap the current pane with the previous pane
  }                  # Swap the current pane with the next pane

  s                  # Select a new session for the attached client
                     interactively
  w                  # Choose the current window interactively
  0 to 9             # Select windows 0 to 9

  d                  # Detach the current client
  D                  # Choose a client to detach

  &                  # Kill the current window
  x                  # Kill the current pane

  Up, Down           # Change to the pane above, below, left, or right
  Left, Right

  M-1 to M-5         # Arrange panes:
                       # 1) even-horizontal
                       # 2) even-vertical
                       # 3) main-horizontal
                       # 4) main-vertical
                       # 5) tiled

  C-Up, C-Down       # Resize the current pane in steps of one cell
  C-Left, C-Right

  M-Up, M-Down       # Resize the current pane in steps of five cells
  M-Left, M-Right

Источник:

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

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

  • zmodem transfers. в screen можно передавать файлы по zmodem. Для этого надо нажать ctrl-a :zmodem catch и sz на том конце. Tmux так не умеет (скриптами можно заставить).
  • подключение к serial-интерфейсу. Screen может работать на последовательном порту (screen -r /dev/ttyS0 115200), tmux — нет.
  • Автоматическое логгирование сеанса tmux тоже не может делать (скриптами можно заставить, см. ниже).

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

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

В самом 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`.

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

  • tmux is sweet as heck (англ.) — некоторые преимущества tmux по сравнению с GNU Screen
  • tmux: Productive Mouse-Free Development (англ.) — интересная книга про tmux из серии Pragmatic Programmer
  • Multiplexers: Screen, Tmux — Hyperpolyglot (англ.) — основные комбинации клавиш и команды tmux и screen; хорошее введение для пользователей screen чтобы быстрее перейти на tmux
  • screen and tmux (англ.) — сравнение основных комбинаций клавиш и команд screen и tmux
  • tmux and mouse mode (англ.) — вопросы использования мыши в tmux
  • A Tmux Crash Course (англ.) — небольшая подборка советов по работе с tmux
  • TMUX – The Terminal Multiplexer (англ.) — короткое, но хорошее введение в tmux; освоение можно начать с него

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

Источник — «http://xgu.ru/wiki/tmux»