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
sixel Enable sixel support
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

Ссылки