Статья Не хватает возможностей консоли Linux? Используйте tmux!

Друзья, уверен, что каждый из вас, работая в разных консолях в Linux, хотел бы увеличить производительность и скорость этой самой работы. В своё время я тоже не мог обойтись без кучи запущены окон с терминалами, пробовал разные их виды и варианты. Но в какой-то момент открыл для себя такую прекрасную вещь, как мультиплексор. Несмотря на столь длинное название, суть у программы более чем простая - возможность использования одного окна для работы с несколькими приложениями. И самое главное: можно забыть про мышь, используя только клавиатуру!

Я считаю, что одной из самых популярных программ в этом сегменте является tmux.
Доверившись народной мудрости "лучше один раз увидеть, чем тысячу раз услышать", представляю его вам во всей красе:


Скриншот 2019-05-28 14.10.50.png Скриншот 2019-05-28 14.11.38.png Скриншот 2019-05-28 15.39.54.png Szo7s[1].png Tmux5[1].png tmux-tips[1].png tmux[1].png Скриншот 2019-05-28 15.19.22.png


Вот что нам говорит великая википедия об этой утилите
tmux — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне.
И ведь в самом деле всё так и есть.

Установка
Так как же начать пользоваться этим чудом? Всё просто:
tmux присутствует во всех стандартных репозиториях, поэтому с установкой проблем возникнуть не должно:
Debian/Ubuntu
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

Основные команды
Теперь можно полноценно пользоваться tmux.

Для начала самое простое:
1. Любое окно можно разделить на несколько горизонтальных или вертикальных фреймов, которые так же делятся по вашему усмотрению. (Далее все действия выполняются в АНГЛИЙСКОЙ раскладке) А делается это просто:

Нажимаете управляющую последовательность Ctrl+a и тут же символ двойных кавычек (Э в русской раскладке). Между вводом управляющей последовательности и командой может пройти несколько секунд, не спешите и делайте всё аккуратно.
И вот у нас уже экран поделён на два горизонтальных фрейма.
Скриншот 2019-05-28 14.35.09.png
2. Для вертикального деления активного фрейма мы так же используем комбинацию Ctrl+a % (клавиша 5 с Shift)
Скриншот 2019-05-28 15.00.55.png

3. Чтобы закрыть активный фрейм (он выделен зелёным цветом), снова вводим управляющую последовательность Ctrl+a и нажимаем x в английской раскладке
Так как мы установили запрос на закрытие окон, то в нижнем поле у нас появляется подтверждающий вопрос. Жмём Y
Скриншот 2019-05-28 14.37.04.png

4. Для перехода по фреймам используем комбинацию Ctrl+а стрелка

5. Чтобы полностью закрыть всё окно со всеми фреймами, есть комбинация Ctrl+a &
Снова появляется запрос на закрытие окна, с которым мы или соглашаемся, или отклоняем.
Скриншот 2019-05-28 15.03.25.png
6. Создание нового окна Ctrl+a с
Новое окно автоматически получает последний номер (или первый пропущенный, если было закрыто какое-то окно в середине списка), по которому к нему можно обратиться. tmux старается сохранять последовательную нумерацию окон.

7. Выбор нужного окна Ctrl+a (номер нужного окна)

8. Для того, чтобы найти нужное окно, можно использовать комбинацию Ctrl+a w
В верхнем окне появляется список с открытыми окнами.
Навигация осуществляется стрелочками.
Чтобы увидеть, какие программы запущенны в окнах? где есть +, жмём стрелку вправо
Чтобы переключиться в нужное окно, выбираем его стрелками и нажимаем Enter
Чтобы выйти из этого режима, нажимаем q

Скриншот 2019-05-28 15.07.45.png

9. Комбинация Сtrl+a z раскроет активный фрейм во весь экран. Это удобно при работе с текстом, например, когда нужно одновременно писать код и видеть его выполнение. Для возвращения в "общее окно" снова нажимаем Сtrl+a z
Скриншот 2019-05-28 17.30.48.png
Скриншот 2019-05-28 17.30.54.png

10. Мало используемая команда Ctrl+a Space перевернёт горизонтальные фреймы в вертикальные, а вертикальные в горизонтальные
Скриншот 2019-05-28 15.21.05.png
11. В tmux не реализована работа с мышкой, поэтому, если нужно прокрутить экран выше, используем комбинацию Ctrl+a PgUp Мы попадаем в режим "перемотки", в правом углу появляется жёлтое окошко с количеством строк в этом фрейме. Навигация осуществляется стрелками вверх и вниз, переход по словам кнопкой w, переход в конец G, в начало g.
Скриншот 2019-05-28 15.29.47.png

Находясь в этом режиме, можно нажать на пробел и начать выделение нужного объёма текста (стрелки и w). После того, как нужный фрагмент текста выбран, нажатием Enter переносим его в буфер обмена. Открываем любой текстовый редактор и вставляем текст комбинацией Ctrl+a p
Скриншот 2019-05-28 15.33.33.png
Скриншот 2019-05-28 15.35.00.png

12. Для того, чтобы изменить размер фрейма по горизонтали или вертикали, нужно нажать Ctrl+A Alt+стрелка Например, для увеличения верхнего блока (за счёт уменьшения нижних), мы тянем его вниз комбинацией Ctrl+A Alt+стрелка вниз (не отпуская Alt, можно несколько раз нажать на стрелку). Потом можем переключиться в средний фрейм комбинацией Ctrl+A стрелка вниз и так же расширить его вниз Ctrl+A Alt+стрелка вниз
Аналогичным способом, используя стрелки вправо и влево, можно менять ширину вертикальных фреймов.
Скриншот 2019-05-28 15.37.23.png
13. Запускаем часы в активном фрейме Ctrl+A t
Скриншот 2019-05-28 15.39.54.png
14. Переименовать окно Ctrl+A , (запятая) И дальше вводим имя.

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"

Можно было бы сказать, что на этом всё, но поверьте, что это только лишь начало. Возможностей этого мультиплексора великое множество, в помощь вам

1. man tmux

2. Tmux wiki

3. Отдельная благодарность пользователю Глюк за информацию о классном автоинсталляторе настроек tmux'a tmux-config

30138
4.

5 tmux-themepack by Jim Myhrberg

6.

7. Oh My Tmux! by Gregory Pakosz


Ну и Google, Yandex и YouTube вам в помощь!
Всех благ!
 
В

Варяг

К чему это? Разве статья называется сравнение tmux и screen?
Сравнения мультиплексоров в этой статье не было.



Да есть: "Ctrl+a [ /"

1) Не tmux единым, все это можно делать в screen и юзерас не помешает это знать.
2) Вы предложили нерабочий вариант.
 

f22

Codeby Academy
Gold Team
05.05.2019
1 931
226
BIT
1 721
1) Не tmux единым, все это можно делать в screen и юзерас не помешает это знать.
Так напиши об этом статью! Чего голословно всех юзеров пытаться убедить?
И я ещё раз призываю внимательнее читать название топика.


В tmux есть возможность поиска в самом выводе?
2) Вы предложили нерабочий вариант.
Если ты не умеешь им пользоваться, это же не говорит о том, что вариант нерабочий?

Скриншот 2019-06-03 01.04.30.png Скриншот 2019-06-03 01.04.32.png
 
В

Варяг

Так напиши об этом статью! Чего голословно всех юзеров пытаться убедить?
И я ещё раз призываю внимательнее читать название топика.



Если ты не умеешь им пользоваться, это же не говорит о том, что вариант нерабочий?


Посмотреть вложение 30273Посмотреть вложение 30274
Что ты пишешь? Ты рофлишь?

Перечитай команду, которую ты написал и попробуй ее в любом дистрибутиве Linux.
Знает он, советует... таких советников...
 

f22

Codeby Academy
Gold Team
05.05.2019
1 931
226
BIT
1 721
Что ты пишешь? Ты рофлишь?

Перечитай команду, которую ты написал и попробуй ее в любом дистрибутиве Linux.
Знает он, советует... таких советников...
При чём тут дистрибутив Linux?
Я тебе уже ВТОРОЙ раз подчёркнуто вежливо рекомендую изучить топик, чтобы не выглядеть идиотом,
задавая подобные вопросы и оставляя неуместные комментарии.


Речь идёт о мультиплексоре tmux, там свой синтаксис
к стандартной консоли он не имеет никакого отношения


tmux использует сочетание клавиш Ctrl+b для входа в "режим ожидания команды". На мой взгляд, расположение этих двух клавиш на стандартной клавиатуре не очень удобное, поэтому предлагаю изменить его на Ctrl+a в настройках

Для того, чтобы войти в режим ожидание команды нужно нажать
Ctrl + a
После этого квадратную скобку для входа в режим работы с выводом консоли
[
И уже после этого слеш для поиска
/
Далее вводишь нужную фразу

Скриншоты совсем не смотрел? Или я по твоему их нарисовал?

Скриншот 2019-06-03 01.04.30.png Скриншот 2019-06-03 01.04.32.png
 
  • Нравится
Реакции: Глюк

Тайпэн

Member
11.04.2019
7
-2
BIT
0
Парень, ты бы не писал, то, в чём едва разбираешься.

При чём тут дистрибутив Linux?
При том, что ты пишешь

Debian/Ubuntu
apt-get install tmux
Ясно причём тут Linux? или нет?

Тебя спрашивают
В tmux есть возможность поиска в самом выводе?

ты отвечаешь

Если ты не умеешь им пользоваться, это же не говорит о том, что вариант нерабочий?
изучить топик, чтобы не выглядеть идиотом,

Тебе ответ: "Изучи страницу man tmux"
30406

С-s - означает сокращенно: ctrl+s

Чтобы перейти в режим "поиск по выводы"
1) Запустить tmux - tmux, пример набить cat /proc/meminfo
2) Нужно перейти в режим скроллинга Ctrl+b+PgUp
3) Нажать ctrl+s (и набирать любое слово для поиска в выводе)
30408


Ещё раз пересмотри, что ты пишешь чтобы поиском пользоваться "Ctrl+a [ /"
Сначала изучи страницу man tmux, потом Arch Help, потом внимательно читай, что ты пишешь в своей статье, чтобы не выглядеть идиотом.
И нормально отвечай на вопросы, а не ругайся на публику.
К тому же у тебя лычка - в двойне ответственнее, а ты так подставляешься.
 

f22

Codeby Academy
Gold Team
05.05.2019
1 931
226
BIT
1 721
Парень, ты бы не писал, то, в чём едва разбираешься.
Во-первых, я тебе не парень. Если хочешь уважительного общения, начинай его с нормального обращения.

Что ты пишешь? Ты рофлишь?
Перечитай команду, которую ты написал и попробуй ее в любом дистрибутиве Linux.
Знает он, советует... таких советников...

Ясно причём тут Linux? или нет?
Ты понимаешь, что горячие клавиши в программе Photoshop отличаются от горячих клавиш в программе Word?
И даже то, что они установлены в одной и той же ОС не сделает эти клавиши одинаковыми.

Стандартная консоль Linux точно так же отличается от мультиплексора tmux и использует свои горячие клавиши

Во-вторых, в своём первом посте, который я ТРЕТИЙ РАЗ НАСТОЙЧИВО ПРОШУ ТЕБЯ ПРОЧИТАТЬ, есть МОЙ ВАРИАНТ НАСТРОЕК
Настройка
После установки рекомендую всем зайти в настройки и немного их изменить под себя.

Это вариант, в котором горячие клавиши используются ИНАЧЕ, ЧЕМ В СТАНДАРТНОЙ КОНСОЛИ И В СТАНДАРТНОЙ РАБОТЕ САМОГО tmux'a
Тебе ответ: "Изучи страницу man tmux"
Зачем ты это пишешь? Зачем мне изучать эту страницу, когда мои настройки изменили её?
Если бы ты прочёл топик, ты бы не стал писать эту чушь.


Ещё раз пересмотри, что ты пишешь чтобы поиском пользоваться "Ctrl+a [ /"
В третьих, ты серьёзно считаешь себя умнее всех?
Я тебе ещё раз спрашиваю: как я делаю скрины ниже, если бы не вводил те команды, которые советую тебе?
Какой мне в этом смысл? Зачем мне сознательно путать тебя и других пользователей?
Clipboarder.2019.06.04-002.png
Clipboarder.2019.06.04.png


И нормально отвечай на вопросы, а не ругайся на публику.
Тебе 2 раза написали нормальный ответ, а ты споришь, даже не пытаясь понять.
Сколько ещё раз нужно ответить?


Если тебе хочется разобраться в теме топика, так ты сначала сделай всё по инструкции,
которую я мало того, что написал, так ещё и сам проверил,
а потом уже говори, что у тебя что-то не получилось или тебе дают не те советы.

 

Вложения

  • 1559669249910.png
    1559669249910.png
    8,2 КБ · Просмотры: 529
  • Нравится
Реакции: Глюк

Глюк

Red Team
03.01.2018
1 185
1 879
BIT
177
Во-первых, я тебе не парень. Если хочешь уважительного общения, начинай его с нормального обращения.




Ты понимаешь, что горячие клавиши в программе Photoshop отличаются от горячих клавиш в программе Word?

И даже то, что они установлены в одной и той же ОС не сделает эти клавиши одинаковыми.

Стандартная консоль Linux точно так же отличается от мультиплексора tmux и использует свои горячие клавиши


Во-вторых, в своём первом посте, который я ТРЕТИЙ РАЗ НАСТОЙЧИВО ПРОШУ ТЕБЯ ПРОЧИТАТЬ, есть МОЙ ВАРИАНТ НАСТРОЕК


Это вариант, в котором горячие клавиши используются ИНАЧЕ, ЧЕМ В СТАНДАРТНОЙ КОНСОЛИ И В СТАНДАРТНОЙ РАБОТЕ САМОГО tmux'a

Зачем ты это пишешь? Зачем мне изучать эту страницу, когда мои настройки изменили её?
Если бы ты прочёл топик, ты бы не стал писать эту чушь.


В третьих, ты серьёзно считаешь себя умнее всех?

Я тебе ещё раз спрашиваю: как я делаю скрины ниже, если бы не вводил те команды, которые советую тебе?
Какой мне в этом смысл? Зачем мне сознательно путать тебя и других пользователей?
Посмотреть вложение 30432
Посмотреть вложение 30431



Тебе 2 раза написали нормальный ответ, а ты споришь, даже не пытаясь понять.
Сколько ещё раз нужно ответить?


Если тебе хочется разобраться в теме топика, так ты сначала сделай всё по инструкции,
которую я мало того, что написал, так ещё и сам проверил,
а потом уже говори, что у тебя что-то не получилось или тебе дают не те советы.
бро, не трать нервы и время. нынешнее поколение читает по диагонали, пишет справа налево, при этом они боги олимпа... юношеский максимализм. ничего с этим не поделаешь.... )))) время расставит всё по своим местам.
 
  • Нравится
Реакции: f22

f22

Codeby Academy
Gold Team
05.05.2019
1 931
226
BIT
1 721
бро, не трать нервы и время. нынешнее поколение читает по диагонали, пишет справа налево, при этом они боги олимпа... юношеский максимализм. ничего с этим не поделаешь.... )))) время расставит всё по своим местам.
Спасибо за поддержку дружище! я не знаю, как ещё убедить читать )
 

Iskus

Green Team
13.11.2017
287
468
BIT
0
Не знаю, парни, мне tmux вообщее не зашел, зато залетели так, что не могу определиться , и, наверное все таки могу определиться, потому что это нереально офигенный эмулятор терминала, в который я, можно сказать, влюбился с первого взгляда, и который всем рекомендую установить хотя бы попробовать, я уверен большинство его уже удалять не станет, короче это ! Поддерживает всё, что есть в остальных известых мне эмуляторах, включая выпадание, и самую детальную кастомизацию. Он стоит того, что бы хотя бы не пройти мимо, поверте, не разочаруетесь.
 

f22

Codeby Academy
Gold Team
05.05.2019
1 931
226
BIT
1 721
Не знаю, парни, мне tmux вообщее не зашел, зато залетели так, что не могу определиться , и, наверное все таки могу определиться, потому что это нереально офигенный эмулятор терминала, в который я, можно сказать, влюбился с первого взгляда, и который всем рекомендую установить хотя бы попробовать, я уверен большинство его уже удалять не станет, короче это ! Поддерживает всё, что есть в остальных известых мне эмуляторах, включая выпадание, и самую детальную кастомизацию. Он стоит того, что бы хотя бы не пройти мимо, поверте, не разочаруетесь.
Согласен, очень красивый менеджер, жаль только нужен X11 SSH им особо не хочется грузить...
30480
terminology-splits-full-thumb[1].png
Кстати, кроме эмулятора у них есть еще и просмотрщик фотографий, видео плеер и скоро IDE должна появиться

We have included common features such as a , , an , and even the makings of .
 

ferre

Green Team
14.12.2019
14
1
BIT
0
Как это до всех донести, дружище? )))
Не каждому зайдет...
1 Почему не используешь плагины? tmux-plugins советую, половину твоего конфига можно заменить 2-3 строчками установок плагинов, причем функционала будет на порядок больше
2 советую так же добавить бинд на обновление конфига
3 почему не задействована мышь? очень удобно манипулировать окнами и их размерами мышкой.
 

ferre

Green Team
14.12.2019
14
1
BIT
0
В общем прошло дня 2-3 как я погрузился в это колдовство с настройкой и адаптацией конфигов под себя. Стек (Vim + Tmux + Bash) пришлось поменять на ( NeoVim + Tmux + Zsh ) + туева хуча плагинов. Вопросов осталось еще больше, чем было изначально, осваивать эти 3 программы придется долго и упорно (некоторые так и не находят выхода). Итак как теперь выглядит моя среда.
vim2.png
 

f22

Codeby Academy
Gold Team
05.05.2019
1 931
226
BIT
1 721
В общем прошло дня 2-3 как я погрузился в это колдовство с настройкой и адаптацией конфигов под себя. Стек (Vim + Tmux + Bash) пришлось поменять на ( NeoVim + Tmux + Zsh ) + туева хуча плагинов. Вопросов осталось еще больше, чем было изначально, осваивать эти 3 программы придется долго и упорно (некоторые так и не находят выхода). Итак как теперь выглядит моя среда.
Где же пруфы, где настройки? Хочется опробовать)
 
  • Нравится
Реакции: Xulinam

ferre

Green Team
14.12.2019
14
1
BIT
0
Где же пруфы, где настройки? Хочется опробовать)
configs.png


В моих конфигах все довольно аскетично :) Некоторые плагины закомментированы в .vimrc т.к это kali на виртуальной машине, они там ни к чему. В .zshrc стандартный конфиг от oh-my-zsh. Пока данного функционала достаточно, по мере освоения буду что-то менять. Сам код я думаю не имеет смысла выкладывать, т.к новичок просто скопировав код получит кучу ошибок, здесь важна последовательность действий. Т.е сначала установить необходимый софт, затем установить к каждому менеджер плагинов (опять же их много и каждый волен выбирать по своему усмотрению), отредактировать конфиги добавив необходимые плагины в зависимости от установленного менеджера, сохранить, перезагрузить конфиг, затем только перейти к процессу установки необходимых плагинов. Некоторые из них ( такие как YouCompleteMe ) требуют отдельных танцев с бубном. По моему субъективному мнению все должно начинаться с малого, т.е с освоения базового функционала и только потом переходить к настройке той или иной программы под свои нужды. Удачи вам в прокачке своей эффективности )

PS По просьбе конечно могу выслать в личном сообщении.
 
Последнее редактирование:

ferre

Green Team
14.12.2019
14
1
BIT
0
тут я не соглашусь на сайте все расписано полностью как правильно ставить, и как настроить))
Посмотреть вложение 38922 так что тут он не нужен))
Если у вас проснется желание написать код на удаленной машине, то конечно плагин не помешает ) Но я считаю избыточно ставить его на виртуальную машину. Что касается установки, ничего сложного нет, просто мне лень было описывать сам процесс установки и настройки. Любой может ознакомится с моим скрином и загуглить интересующий его плагин.
 
  • Нравится
Реакции: Xulinam

ferre

Green Team
14.12.2019
14
1
BIT
0
Ребят наконец-то решил проблему с отображением общей цветовой схемы vim ( nvim ) в tmux'e. При установки vim в tmux отображается по дефолту, не зависимо от настроек цветовой схемы в .vimrc

Решение:

.vimrc
Код:
if exists('+termguicolors')
  let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
  let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
  set termguicolors
endif

.tmux.conf
Код:
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"

.zshrc || .bashrc
Код:
alias tmux='tmux -2'

screen.png
screen.png
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!