Друзья, уверен, что каждый из вас, работая в разных консолях в Linux, хотел бы увеличить производительность и скорость этой самой работы. В своё время я тоже не мог обойтись без кучи запущены окон с терминалами, пробовал разные их виды и варианты. Но в какой-то момент открыл для себя такую прекрасную вещь, как мультиплексор. Несмотря на столь длинное название, суть у программы более чем простая - возможность использования одного окна для работы с несколькими приложениями. И самое главное: можно забыть про мышь, используя только клавиатуру!
Я считаю, что одной из самых популярных программ в этом сегменте является tmux.
Доверившись народной мудрости "лучше один раз увидеть, чем тысячу раз услышать", представляю его вам во всей красе:
Вот что нам говорит великая википедия об этой утилите
tmux — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне.
И ведь в самом деле всё так и есть.
Установка
Так как же начать пользоваться этим чудом? Всё просто:
tmux присутствует во всех стандартных репозиториях, поэтому с установкой проблем возникнуть не должно:
Настройка
После установки рекомендую всем зайти в настройки и немного их изменить под себя.
Первое, оно же главное: дабы не мешать другим программам, tmux использует сочетание клавиш Ctrl+b для входа в "режим ожидания команды". На мой взгляд, расположение этих двух клавиш на стандартной клавиатуре не очень удобное, поэтому предлагаю изменить его на Ctrl+a в настройках
Основные команды
Теперь можно полноценно пользоваться tmux.
Для начала самое простое:
1. Любое окно можно разделить на несколько горизонтальных или вертикальных фреймов, которые так же делятся по вашему усмотрению. (Далее все действия выполняются в АНГЛИЙСКОЙ раскладке) А делается это просто:
Нажимаете управляющую последовательность Ctrl+a и тут же символ двойных кавычек (Э в русской раскладке). Между вводом управляющей последовательности и командой может пройти несколько секунд, не спешите и делайте всё аккуратно.
И вот у нас уже экран поделён на два горизонтальных фрейма.
2. Для вертикального деления активного фрейма мы так же используем комбинацию Ctrl+a % (клавиша 5 с Shift)
3. Чтобы закрыть активный фрейм (он выделен зелёным цветом), снова вводим управляющую последовательность Ctrl+a и нажимаем x в английской раскладке
Так как мы установили запрос на закрытие окон, то в нижнем поле у нас появляется подтверждающий вопрос. Жмём Y
4. Для перехода по фреймам используем комбинацию Ctrl+а стрелка
5. Чтобы полностью закрыть всё окно со всеми фреймами, есть комбинация Ctrl+a &
Снова появляется запрос на закрытие окна, с которым мы или соглашаемся, или отклоняем.
6. Создание нового окна Ctrl+a с
Новое окно автоматически получает последний номер (или первый пропущенный, если было закрыто какое-то окно в середине списка), по которому к нему можно обратиться. tmux старается сохранять последовательную нумерацию окон.
7. Выбор нужного окна Ctrl+a (номер нужного окна)
8. Для того, чтобы найти нужное окно, можно использовать комбинацию Ctrl+a w
В верхнем окне появляется список с открытыми окнами.
Навигация осуществляется стрелочками.
Чтобы увидеть, какие программы запущенны в окнах? где есть +, жмём стрелку вправо
Чтобы переключиться в нужное окно, выбираем его стрелками и нажимаем Enter
Чтобы выйти из этого режима, нажимаем q
9. Комбинация Сtrl+a z раскроет активный фрейм во весь экран. Это удобно при работе с текстом, например, когда нужно одновременно писать код и видеть его выполнение. Для возвращения в "общее окно" снова нажимаем Сtrl+a z
10. Мало используемая команда Ctrl+a Space перевернёт горизонтальные фреймы в вертикальные, а вертикальные в горизонтальные
11. В tmux не реализована работа с мышкой, поэтому, если нужно прокрутить экран выше, используем комбинацию Ctrl+a PgUp Мы попадаем в режим "перемотки", в правом углу появляется жёлтое окошко с количеством строк в этом фрейме. Навигация осуществляется стрелками вверх и вниз, переход по словам кнопкой w, переход в конец G, в начало g.
Находясь в этом режиме, можно нажать на пробел и начать выделение нужного объёма текста (стрелки и w). После того, как нужный фрагмент текста выбран, нажатием Enter переносим его в буфер обмена. Открываем любой текстовый редактор и вставляем текст комбинацией Ctrl+a p
12. Для того, чтобы изменить размер фрейма по горизонтали или вертикали, нужно нажать Ctrl+A Alt+стрелка Например, для увеличения верхнего блока (за счёт уменьшения нижних), мы тянем его вниз комбинацией Ctrl+A Alt+стрелка вниз (не отпуская Alt, можно несколько раз нажать на стрелку). Потом можем переключиться в средний фрейм комбинацией Ctrl+A стрелка вниз и так же расширить его вниз Ctrl+A Alt+стрелка вниз
Аналогичным способом, используя стрелки вправо и влево, можно менять ширину вертикальных фреймов.
13. Запускаем часы в активном фрейме Ctrl+A t
14. Переименовать окно Ctrl+A , (запятая) И дальше вводим имя.
15. Выйти из текущей сессии tmux Ctrl+A d
16. Присоединиться к текущей последней
Запустить новую сессию
Показать список запущенных сессий
Подключиться к нужной сессии
Так как я обычно подключаюсь к машинам по ssh, то для автоматического запуска tmux сразу после соединения, я добавил в файл ~/.bashrc строки
Можно было бы сказать, что на этом всё, но поверьте, что это только лишь начало. Возможностей этого мультиплексора великое множество, в помощь вам
1.
2. Tmux wiki
3. Отдельная благодарность пользователю Глюк за информацию о классном автоинсталляторе настроек tmux'a tmux-config
4.
5 tmux-themepack by Jim Myhrberg
6.
7. Oh My Tmux! by Gregory Pakosz
Ну и Google, Yandex и YouTube вам в помощь!
Всех благ!
Я считаю, что одной из самых популярных программ в этом сегменте является tmux.
Доверившись народной мудрости "лучше один раз увидеть, чем тысячу раз услышать", представляю его вам во всей красе:
Вот что нам говорит великая википедия об этой утилите
tmux — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне.
И ведь в самом деле всё так и есть.
Установка
Так как же начать пользоваться этим чудом? Всё просто:
tmux присутствует во всех стандартных репозиториях, поэтому с установкой проблем возникнуть не должно:
Debian/Ubuntu
apt-get install tmux
Centos
yum install tmux
Если уж совсем экзотичная система, добро пожаловать за архивом с исходниками
apt-get install tmux
Centos
yum install tmux
Если уж совсем экзотичная система, добро пожаловать за архивом с исходниками
Настройка
После установки рекомендую всем зайти в настройки и немного их изменить под себя.
Первое, оно же главное: дабы не мешать другим программам, tmux использует сочетание клавиш Ctrl+b для входа в "режим ожидания команды". На мой взгляд, расположение этих двух клавиш на стандартной клавиатуре не очень удобное, поэтому предлагаю изменить его на Ctrl+a в настройках
nano ~/.tmux.conf
#Делаем загрузку своих настроек:
bind r source-file ~/.tmux.conf \; display-message "Config loaded"
#Меняем управляющие клавиши:
set -g prefix C-a
unbind C-b
bind C-a last-window
#Включаем подписи окон
set-option -g set-titles on
#Добавляем принципы редактора vi
setw -g mode-keys vi
unbind p
bind p paste-buffer
#Задаём стандартную цветовую схему
set -g default-terminal 'xterm-256color'
#Изменяем подсветку названия окна
set-option -g set-titles on
set -g status-fg blue
#Увеличиваем историю введённых команд
set -g history-limit 10000
#Включаем опцию подсветки активности окна
setw -g monitor-activity on
#Включаем оповещение активного приложения
set -g visual-activity on
#Выбираем формат и цвет
set-window-option -gg clock-mode-colour cyan
set-window-option -g clock-mode-style 24
#Настраиваем прокрутку
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
#И, наконец, меняем номер первого окна с 0 на 1
set -g base-index 1
setw -g pane-base-index 1
bind r source-file ~/.tmux.conf \; display-message "Config loaded"
#Меняем управляющие клавиши:
set -g prefix C-a
unbind C-b
bind C-a last-window
#Включаем подписи окон
set-option -g set-titles on
#Добавляем принципы редактора vi
setw -g mode-keys vi
unbind p
bind p paste-buffer
#Задаём стандартную цветовую схему
set -g default-terminal 'xterm-256color'
#Изменяем подсветку названия окна
set-option -g set-titles on
set -g status-fg blue
#Увеличиваем историю введённых команд
set -g history-limit 10000
#Включаем опцию подсветки активности окна
setw -g monitor-activity on
#Включаем оповещение активного приложения
set -g visual-activity on
#Выбираем формат и цвет
set-window-option -gg clock-mode-colour cyan
set-window-option -g clock-mode-style 24
#Настраиваем прокрутку
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
#И, наконец, меняем номер первого окна с 0 на 1
set -g base-index 1
setw -g pane-base-index 1
Основные команды
Теперь можно полноценно пользоваться tmux.
Для начала самое простое:
1. Любое окно можно разделить на несколько горизонтальных или вертикальных фреймов, которые так же делятся по вашему усмотрению. (Далее все действия выполняются в АНГЛИЙСКОЙ раскладке) А делается это просто:
Нажимаете управляющую последовательность Ctrl+a и тут же символ двойных кавычек (Э в русской раскладке). Между вводом управляющей последовательности и командой может пройти несколько секунд, не спешите и делайте всё аккуратно.
И вот у нас уже экран поделён на два горизонтальных фрейма.
3. Чтобы закрыть активный фрейм (он выделен зелёным цветом), снова вводим управляющую последовательность Ctrl+a и нажимаем x в английской раскладке
Так как мы установили запрос на закрытие окон, то в нижнем поле у нас появляется подтверждающий вопрос. Жмём Y
4. Для перехода по фреймам используем комбинацию Ctrl+а стрелка
5. Чтобы полностью закрыть всё окно со всеми фреймами, есть комбинация Ctrl+a &
Снова появляется запрос на закрытие окна, с которым мы или соглашаемся, или отклоняем.
Новое окно автоматически получает последний номер (или первый пропущенный, если было закрыто какое-то окно в середине списка), по которому к нему можно обратиться. tmux старается сохранять последовательную нумерацию окон.
7. Выбор нужного окна Ctrl+a (номер нужного окна)
8. Для того, чтобы найти нужное окно, можно использовать комбинацию Ctrl+a w
В верхнем окне появляется список с открытыми окнами.
Навигация осуществляется стрелочками.
Чтобы увидеть, какие программы запущенны в окнах? где есть +, жмём стрелку вправо
Чтобы переключиться в нужное окно, выбираем его стрелками и нажимаем Enter
Чтобы выйти из этого режима, нажимаем q
9. Комбинация Сtrl+a z раскроет активный фрейм во весь экран. Это удобно при работе с текстом, например, когда нужно одновременно писать код и видеть его выполнение. Для возвращения в "общее окно" снова нажимаем Сtrl+a z
10. Мало используемая команда Ctrl+a Space перевернёт горизонтальные фреймы в вертикальные, а вертикальные в горизонтальные
Находясь в этом режиме, можно нажать на пробел и начать выделение нужного объёма текста (стрелки и w). После того, как нужный фрагмент текста выбран, нажатием Enter переносим его в буфер обмена. Открываем любой текстовый редактор и вставляем текст комбинацией Ctrl+a p
12. Для того, чтобы изменить размер фрейма по горизонтали или вертикали, нужно нажать Ctrl+A Alt+стрелка Например, для увеличения верхнего блока (за счёт уменьшения нижних), мы тянем его вниз комбинацией Ctrl+A Alt+стрелка вниз (не отпуская Alt, можно несколько раз нажать на стрелку). Потом можем переключиться в средний фрейм комбинацией Ctrl+A стрелка вниз и так же расширить его вниз Ctrl+A Alt+стрелка вниз
Аналогичным способом, используя стрелки вправо и влево, можно менять ширину вертикальных фреймов.
15. Выйти из текущей сессии tmux Ctrl+A d
16. Присоединиться к текущей последней
сессии tmux attach или tmux attach-session
Запустить новую сессию
tmux или tmux new или tmux new-session
Показать список запущенных сессий
tmux ls или tmux list-sessions
Подключиться к нужной сессии
/usr/bin/tmux new-session attach <имя сессии>
Так как я обычно подключаюсь к машинам по ssh, то для автоматического запуска tmux сразу после соединения, я добавил в файл ~/.bashrc строки
if [[ -z $TMUX && -n $SSH_TTY ]]; then
me=$(whoami)
real_tmux=$(command -v tmux)
if [ -z $real_tmux ]; then
echo "No tmux installed."
fi
export TERM="xterm-256color"
if $real_tmux has-session -t $me 2>/dev/null; then
$real_tmux attach-session -t $me
else
if [[ -n $SSH_TTY ]]; then
(tmux new-session -d -s $me && tmux attach-session -t $me)
fi
fi
fi
tmux_run() {
me=$(whoami)
real_tmux=$(which tmux)
args_num="$#"
export TERM="xterm-256color"
if [ "$#" -gt 0 ]; then
$real_tmux "$*"
else
if [[ ! -z $TMUX ]]; then
$real_tmux
else
if $real_tmux has-session -t $me 2>/dev/null; then
$real_tmux attach-session -t $me
else
$real_tmux new -s $USER
$real_tmux attach-session -t $me
fi
fi
fi
}
alias tmux="tmux_run"
me=$(whoami)
real_tmux=$(command -v tmux)
if [ -z $real_tmux ]; then
echo "No tmux installed."
fi
export TERM="xterm-256color"
if $real_tmux has-session -t $me 2>/dev/null; then
$real_tmux attach-session -t $me
else
if [[ -n $SSH_TTY ]]; then
(tmux new-session -d -s $me && tmux attach-session -t $me)
fi
fi
fi
tmux_run() {
me=$(whoami)
real_tmux=$(which tmux)
args_num="$#"
export TERM="xterm-256color"
if [ "$#" -gt 0 ]; then
$real_tmux "$*"
else
if [[ ! -z $TMUX ]]; then
$real_tmux
else
if $real_tmux has-session -t $me 2>/dev/null; then
$real_tmux attach-session -t $me
else
$real_tmux new -s $USER
$real_tmux attach-session -t $me
fi
fi
fi
}
alias tmux="tmux_run"
Можно было бы сказать, что на этом всё, но поверьте, что это только лишь начало. Возможностей этого мультиплексора великое множество, в помощь вам
1.
man tmux
2. Tmux wiki
3. Отдельная благодарность пользователю Глюк за информацию о классном автоинсталляторе настроек tmux'a tmux-config
Ссылка скрыта от гостей
5 tmux-themepack by Jim Myhrberg
6.
Ссылка скрыта от гостей
7. Oh My Tmux! by Gregory Pakosz
Ну и Google, Yandex и YouTube вам в помощь!
Всех благ!