tmux

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Tmux and the translation is 72% complete.
Outdated translations are marked like this.

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.

Пример файла конфигурации

ФАЙЛ ~/.tmux.conf
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
  1. Match session numbers to number row

set -g base-index 1

  1. Set TERM, the default is "screen", "screen-256color" can be tried if "tmux-256color" doesn't work.

set -g default-terminal "tmux-256color"

  1. Set prefix to 'a' with ctl-a > a to send ctrl-a to the terminal
  2. set -g prefix C-a
  3. bind-key a send-prefix
  4. Set prefix2 to the default 'b'
  5. set -g prefix2 C-b
  6. Enable mouse

set -g mouse on

  1. Disable drag action in normal mode if your pointer causes problems with

unbind -n MouseDrag1Pane

  1. Also disable in copy mode
  2. unbind -Tcopy-mode MouseDrag1Pane
  1. Set the bar and inactive borders to blue, highlighting current in green.
  2. set-option -g status-style fg=black,bg=blue
  3. set-window-option -g window-status-current-style bg=green
  4. set-option -g pane-border-style fg=blue
  5. 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.

Внешние ресурсы

Tutorial Videos

Ссылки