Difference between revisions of "Tmux (Русский)"

From ArchWiki
Jump to: navigation, search
(during synchronization with the international version)
(translations)
Line 42: Line 42:
  
 
{{Tip (Русский)|В качестве префикса выступает клавиша модификатор. Вы также можете использовать {{ic|Alt}} вместо {{ic|Ctrl}}, указав: {{ic|set -g prefix m-'\'}}}}
 
{{Tip (Русский)|В качестве префикса выступает клавиша модификатор. Вы также можете использовать {{ic|Alt}} вместо {{ic|Ctrl}}, указав: {{ic|set -g prefix m-'\'}}}}
 +
 +
Управление панелями с настройками по умолчанию:
 +
 +
Ctrl-b %  (Разделить окно вертикально)
 +
Ctrl-b |  “split-window” (Разделить окно горизонтально)
 +
Ctrl-b o или Ctrl-b Tab (Перейти к следующей панели)
 +
Ctrl-b {  (Переместить текущую панель влево)
 +
Ctrl-b }  (Переместить текущую панель вправо)
  
 
Способы перемещения между окнами:
 
Способы перемещения между окнами:
Line 71: Line 79:
 
Чтобы перейти по URL, который появляется в tmux, должен быть установлен и настроен {{AUR|urlview}}.
 
Чтобы перейти по URL, который появляется в tmux, должен быть установлен и настроен {{AUR|urlview}}.
  
Inside a new terminal:
+
С открытием нового терминала:
 
  bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e urlview /tmp/tmux-buffer"
 
  bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e urlview /tmp/tmux-buffer"
  
Or inside a new tmux window (no new terminal needed):
+
С открытием нового окна tmux:
 
  bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; new-window -n "urlview" '$SHELL -c "urlview < /tmp/tmux-buffer"'
 
  bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; new-window -n "urlview" '$SHELL -c "urlview < /tmp/tmux-buffer"'
  
=== Определение правильного терминала ===
+
=== Правильное определение терминала ===
  
 
Если вы используете 256-цветный терминал, то понадобится скорректировать его в tmux. Для этого укажите в {{ic|tmux.conf}}:
 
Если вы используете 256-цветный терминал, то понадобится скорректировать его в tmux. Для этого укажите в {{ic|tmux.conf}}:
Line 109: Line 117:
 
=== Автозапуск посредством systemd ===
 
=== Автозапуск посредством systemd ===
  
There are some notable advantages to starting a tmux server at startup.
+
Есть некоторые заметные преимущества в запуске сервера tmux при загрузке.
Notably, when you start a new tmux session, having the service already running reduces any delays in the startup.
+
Новый сеанс tmux начнется значительно быстрее, если служба была запущена.
  
Furthermore, any customization attached to your tmux session will be retained and your tmux session can be made to persist even if you have never logged in, if you have some reason to do that (like a heavily scripted tmux configuration or shared user tmux sessions).
+
Кроме того, ваш сеанс tmux будет сохранен вместе со всеми изменениями, даже если на текущий момент вход в систему не выполнен
  
 
Следующий файл-юнит позволит запускать ''tmux'' как службу для указанного пользователя (имея название вида {{ic|tmux@''имя пользователя''.service}}):
 
Следующий файл-юнит позволит запускать ''tmux'' как службу для указанного пользователя (имея название вида {{ic|tmux@''имя пользователя''.service}}):
Line 132: Line 140:
 
{{Tip (Русский)|You may want to add {{ic|1=WorkingDirectory=''custom_path''}} to customize working directory.}}
 
{{Tip (Русский)|You may want to add {{ic|1=WorkingDirectory=''custom_path''}} to customize working directory.}}
  
Кроме того, вы можете разместить этот файл в ваш [[systemd/User|пользовательский]] каталог, например {{ic|~/.config/systemd/user/tmux.service}}. Таким образом, служба tmux запустится сразу после входа в систему.
+
Кроме того, вы можете разместить этот файл в ваш [[systemd/User|пользовательский]] каталог, например в {{ic|~/.config/systemd/user/tmux.service}}. Таким образом, служба tmux запустится сразу после входа в систему.
 +
 
 +
== Инициализация сеансов ==
 +
 
 +
Можно настроить tmux таким образом, чтобы он запускался с предопределённым набором окон, добавив следующие команды в ваш {{ic|.tmux.conf}}:
 +
 
 +
new  -n WindowName Command
 +
neww -n WindowName Command
 +
neww -n WindowName Command
 +
 
 +
Чтобы запустить сеанс с разделёнными окнами (панелями), добавьте команду splitw после neww, таким образом:
 +
 
 +
new  -s SessionName -n WindowName Command
 +
neww -n foo/bar foo
 +
splitw -v -p 50 -t 0 bar
 +
selectw -t 1
 +
selectp -t 0
 +
 
 +
откроет два окна, второе из которых будет называться foo/bar и будет разделено вертикально пополам с командой foo запущенной перед командой bar. Фокус будет передан второму окну(foo/bar), левой панели (foo).
  
=== Простой конфигурационный файл для примера: ===
+
{{Note (Русский)|Нумерация сеансов, окон и панелей начинается с нуля, если не указан параметр base-index со значением 1 в {{ic|.tmux.conf}} }}
 +
 
 +
Чтобы управлять несколькими сеансами, подключайте раздельные файлы сеансов в конфигурационном файле:
 +
 
 +
# инициализация сеансов
 +
bind F source-file ~/.tmux/foo
 +
bind B source-file ~/.tmux/bar
 +
 
 +
== Простой конфигурационный файл для примера: ==
  
 
  # основные настройки
 
  # основные настройки
Line 215: Line 249:
 
(так же можно использовать лишь часть имени окна для поиска).
 
(так же можно использовать лишь часть имени окна для поиска).
  
==Основное управление панелями с настройками по умолчанию==
 
 
Ctrl-b %  (Разделить окно вертикально)
 
Ctrl-b :  “split-window” (Разделить окно горизонтально)
 
Ctrl-b o  (Перейти к следующей панели)
 
Ctrl-b q  (Показать номера панелей, наберите номер на клавиатуре, чтобы перейти к соответствующей панели)
 
Ctrl-b {  (Переместить текущую панель влево)
 
Ctrl-b }  (Переместить текущую панель вправо)
 
 
==Инициализация сеансов==
 
 
Можно настроить tmux таким образом, чтобы он запускался с предопределённым набором окон, добавив следующие команды в ваш {{ic|.tmux.conf}}:
 
 
new  -n WindowName Command
 
neww -n WindowName Command
 
neww -n WindowName Command
 
 
Чтобы запустить сеанс с разделёнными окнами (панелями), добавьте команду splitw после neww, таким образом:
 
 
new  -s SessionName -n WindowName Command
 
neww -n foo/bar foo
 
splitw -v -p 50 -t 0 bar
 
selectw -t 1
 
selectp -t 0
 
 
откроет два окна, второе из которых будет называться foo/bar и будет разделено вертикально пополам с командой foo запущенной перед командой bar. Фокус будет передан второму окну(foo/bar), левой панели (foo).
 
 
{{Note (Русский)|Нумерация сеансов, окон и панелей начинается с нуля, если не указан параметр base-index со значением 1 в {{ic|.tmux.conf}} }}
 
 
Чтобы управлять несколькими сеансами, подключайте раздельные файлы сеансов в конфигурационном файле:
 
 
# инициализация сеансов
 
bind F source-file ~/.tmux/foo
 
bind B source-file ~/.tmux/bar
 
  
 
==Проблемы с прокруткой==
 
==Проблемы с прокруткой==

Revision as of 08:16, 5 February 2015

zh-CN:Tmux

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Tmux — терминальный мультиплексор берущий своё начало из мира BSD. Он позволяет создавать несколько терминалов (или окон), каждый из которых выполняет отдельную программу, а так же управлять этими терминалами на одном экране. tmux может быть отвязан от экрана и продолжать свою работу в фоновом режиме, а позже — привязан вновь. Он использует библиотеку ncurses.

Во многом, он похож на программу GNU Screen, но имеет некоторые отличия. (Кто сказал улучшения?) За более подробной информацией обращайтесь на официальный вебсайт.

Установка

Установите пакет tmux доступный в официальных репозиториях.

Настройка

Пользовательский файл настроек должен быть расположен в ~/.tmux.conf, в то время как глобальный — в /etc/tmux.conf. Стандартные конфигурационные файлы размещены в директории /usr/share/tmux/.

Клавиши управления

По умолчанию, клавишами перехода в режим управления является комбинация клавиш Ctrl-b. Например, для вертикального разделения окна Ctrl-b+%.

После разделения окна на несколько панелей, панели могут быть изменены, используя следующее сочетание клавиш: Ctrl-b) и, продолжая удерживать Ctrl, нажмите клавишу вправо/влево/вверх/вниз. Менять панели местами можно таким же способом, только с нажатием o вместо клавиш направления.

Совет: Для имитации управления аналогично screen используйте содержимое файла /usr/share/tmux/screen-keys.conf в качестве рабочего конфигурационного.

Привязки клавиш для различных команд могут быть изменены в tmux.conf. Например, модификатор управления Ctrl-b может быть изменен на Ctrl-a после добавления следующих команд в конфигурационном файле:

unbind C-b
set -g prefix C-a
bind C-a send-prefix
Совет: В качестве префикса выступает клавиша модификатор. Вы также можете использовать Alt вместо Ctrl, указав: set -g prefix m-'\'

Управление панелями с настройками по умолчанию:

Ctrl-b %  (Разделить окно вертикально)
Ctrl-b |  “split-window” (Разделить окно горизонтально)
Ctrl-b o или Ctrl-b Tab (Перейти к следующей панели)
Ctrl-b {  (Переместить текущую панель влево)
Ctrl-b }  (Переместить текущую панель вправо)

Способы перемещения между окнами:

Ctrl-b l (Переход предыдущему окну)
Ctrl-b w (Список всех окон с нумерацией)
Ctrl-b <window number> (Перемещение по указанному номеру окна, по умолчанию в диапазоне от 0 до 9)
Ctrl-b q  (Показать номера панелей; перейти в область по нажатии клавиши, соответствующей номеру)

Для удобной навигации со множеством окон tmux имеет возможность поиска, используя комбинации клавиш:

Ctrl-b f <window name> (Поиск по названию окна)
Ctrl-b w (Выбор окна из интерактивного списка)

Прокрутка

Прокручивать область можно следующими способами:

Ctrl-b [

Активирует режим прокрутки, после чего можно использовать клавиши со стрелками или pgUp pgDown.

Ctrl-b PageUp

Позволит сразу прокручивать страницу вверх

Переход по URL

Чтобы перейти по URL, который появляется в tmux, должен быть установлен и настроен urlviewAUR.

С открытием нового терминала:

bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e urlview /tmp/tmux-buffer"

С открытием нового окна tmux:

bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; new-window -n "urlview" '$SHELL -c "urlview < /tmp/tmux-buffer"'

Правильное определение терминала

Если вы используете 256-цветный терминал, то понадобится скорректировать его в tmux. Для этого укажите в tmux.conf:

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

Если клавиши xterm будут активированы в tmux.conf, то вам потребуется пересобрать библиотеку terminfo для объявления новых управляющих символов, иначе приложения могут их не распознать. После составления следующего в tic вы сможете использовать "xterm-screen-256color" в качестве вашего TERM:

# A screen- based TERMINFO that declares the escape sequences
# enabled by the tmux config "set-window-option -g xterm-keys".
#
# Prefix the name with xterm- since some applications inspect
# the TERM *name* in addition to the terminal capabilities advertised.
xterm-screen-256color|GNU Screen with 256 colors bce and tmux xterm-keys,

# As of Nov'11, the below keys are picked up by
# .../tmux/blob/master/trunk/xterm-keys.c:
	kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H,
	kIC=\E[2;2~, kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~,
	kRIT=\E[1;2C,

# Change this to screen-256color if the terminal you run tmux in
# doesn't support bce:
	use=screen-256color-bce,

Другие настройки

Установить возможность скроллинга до 10000 строк:

set -g history-limit 10000

Автозапуск посредством systemd

Есть некоторые заметные преимущества в запуске сервера tmux при загрузке. Новый сеанс tmux начнется значительно быстрее, если служба была запущена.

Кроме того, ваш сеанс tmux будет сохранен вместе со всеми изменениями, даже если на текущий момент вход в систему не выполнен

Следующий файл-юнит позволит запускать tmux как службу для указанного пользователя (имея название вида tmux@имя пользователя.service):

/etc/systemd/system/tmux@.service
[Unit]
Description=Start tmux in detached session

[Service]
Type=forking
User=%I
ExecStart=/usr/bin/tmux new-session -s %u -d
ExecStop=/usr/bin/tmux kill-session -t %u

[Install]
WantedBy=multi-user.target
Совет: You may want to add WorkingDirectory=custom_path to customize working directory.

Кроме того, вы можете разместить этот файл в ваш пользовательский каталог, например в ~/.config/systemd/user/tmux.service. Таким образом, служба tmux запустится сразу после входа в систему.

Инициализация сеансов

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

new  -n WindowName Command
neww -n WindowName Command
neww -n WindowName Command

Чтобы запустить сеанс с разделёнными окнами (панелями), добавьте команду splitw после neww, таким образом:

new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

откроет два окна, второе из которых будет называться foo/bar и будет разделено вертикально пополам с командой foo запущенной перед командой bar. Фокус будет передан второму окну(foo/bar), левой панели (foo).

Примечание: Нумерация сеансов, окон и панелей начинается с нуля, если не указан параметр base-index со значением 1 в .tmux.conf

Чтобы управлять несколькими сеансами, подключайте раздельные файлы сеансов в конфигурационном файле:

# инициализация сеансов
bind F source-file ~/.tmux/foo
bind B source-file ~/.tmux/bar

Простой конфигурационный файл для примера:

# основные настройки
set-window-option -g mode-keys vi # vi key
set-option -g status-keys vi
set-window-option -g utf8 on # поддержка utf-8
set-window-option -g mode-mouse off # отключить "мышь"

# режим копирования на клавише "Esc"
unbind [
bind Escape copy-mode

# переместить буфер обмена tmux в буфер обмена X
bind-key C-y save-buffer /tmp/tmux-buffer \; run-shell "cat /tmp/tmux-buffer | xclip"

# разделение на панели и перемещение
set-option -g mouse-select-pane off
unbind %
bind + split-window -h # horizontal split
unbind '"'
bind _ split-window -v # vertical split
bind C-j previous-window
bind C-k next-window

# заголовок окна
set-option -g set-titles on
set-option -g set-titles-string '#S:#I.#P #W' # window number,program name,active (or not)
set-window-option -g automatic-rename on # auto name

# сообщения
#set-window-option -g mode-bg magenta
#set-window-option -g mode-fg black
#set-option -g message-bg magenta
#set-option -g message-fg black

# отключить визуальную активность
set -g visual-activity off
set -g visual-bell off

# следующее окно
bind-key -n C-right next

# предыдущее окно
bind-key -n C-left prev

# панель состояния
set-option -g status-utf8 on
set-option -g status-justify right
set-option -g status-bg black
set-option -g status-fg cyan
set-option -g status-interval 5
set-option -g status-left-length 30
set-option -g status-left '#[fg=magenta]» #[fg=blue,bold]#T#[default]'
set-option -g status-right '#[fg=cyan]»» #[fg=blue,bold]###S #[fg=magenta]%R %m-%d#(acpi | cut -d ',' -f 2)#[default]'
set-option -g visual-activity on
set-window-option -g monitor-activity on
set-window-option -g window-status-current-fg white

# часы
set-window-option -g clock-mode-colour cyan
set-window-option -g clock-mode-style 24

Основное управление окнами с настройками по умолчанию

Запустите tmux командой tmux. Появится окно терминала и панель состояния.

Ctrl-b c  создать новое окно 
Ctrl-b ,.  переименовать текущее окно — введите новое имя и нажмите Enter

Множество способов смены ококн:

Ctrl-b n (Перейти к следующему окну)
Ctrl-b p (Перейти к предыдущему окну)
Ctrl-b l (Перейти к ранее выбранному окну)
Ctrl-b w (Список всех окон / номеров окон)
Ctrl-b <номер окна> (Перейти к окну с определённым номером от 0 до 9)

Что делать, если у вас открыто более десяти окон? В tmux есть опция поиска по окнам:

Нажмите Ctrl-b f  и введите имя нужного окна

(так же можно использовать лишь часть имени окна для поиска).


Проблемы с прокруткой

Если у вас проблемы с прокруткой клавишами Shift-PageUp/Shift-PageDown в терминале, попробуйте следующее:

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

Дополнительные источники