Хотите расширить свой арсенал TMUX? Подскажем, как выбрать оружие и где его использовать.

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

Установка

Плагины TMUX устанавливаются двумя способами.

  • Вручную. Командой git clone загружаем код плагина и помещаем в каталог. Затем для обращения к плагину настраиваем конфигурационный файл .tmux.conf.
  • Диспетчером плагинов. С ним установка плагинов tmux и управление ими автоматизируются, процесс сильно упрощается: плагины устанавливаются и обновляются напрямую из .tmux.conf.

Подробнее об установке  —  в интернете, переходим к самому интересному.

Список плагинов

Плагины описываются в случайном порядке.

Все они взяты отсюда. Разберем самые нужные плагины.

aw-watcher-tmux

Это плагин для отслеживания активности, который устанавливается и как глобальное приложение, запускаемое в качестве службы на Mac, Windows и Linux.

Вместо Ubuntu сгодится и Arch.

Как TMUX-плагином им отслеживаются сеансы и действия внутри них. Но отслеживать конкретного пользователя не получится, да и неприкосновенность частной жизни никто не отменял.

Цель плагина  —  повышение продуктивности, а не слежка. Поэтому все данные остаются локальными.

Плюсом к нему  —  симпатичный пользовательский интерфейс в браузере. Только не говорите о нем боссу, иначе начнется микроменеджмент.

Вот официальный сайт, если вам интересно.

tmux-autoreload

Фактически это «наблюдатель за файлами», предназначенный для tmux.conf. Подобно git, которым отслеживаются изменения в файлах, при помощи tmux-autoreload конфигурационный файл просматривается и автоматически перезагружается с применением тут же последних настроек. Так что при каждом обновлении конфигурации перезагружать ее вручную не нужно.

tmux-cowboy

Плагин предназначен для завершения «неотвечающих» процессов, запущенных в сеансах работы с терминалом. Им быстро и легко «убираются» программы, которые «захватили» процессор и зависли.

Главный его функционал  —  способность уничтожать процессы отправкой целевым программам быстрейшего сигнала SIGKILL. Уничтожать их самостоятельно, переключаясь на другие панели/окна, опять же не нужно.

Внимание: плагин не для новичков, которые только начали осваивать Linux-системы. Необходимо понимать связанные с ним риски, иначе что-нибудь сломается. Кроме того, некорректно завершенный процесс чреват потерей данных или неожиданным поведением.

Применяйте tmux-cowboy, только если процесс совсем «не отвечает», испробованы другие способы его завершения и вы знаете, что делаете.

tmux-git-autofetch

Этим плагином выполняется автоматическая выборка из удаленного гит-репозитория, забудьте о git fetch. Досадно было обнаруживать, что при фиксации изменений изменялось только добавляемое ref. Благодаря плагину это осталось в прошлом.

tmux-menus

Трудно запомнить все привязки ключей? Теперь нужно только одну  —  для плагина tmux-menus.

Это TUI-решение для контекстного меню внутри терминала. На этом всплывающем меню, которым на бэкенде обрабатываются все труднозапоминаемые привязки ключей, пользователь выбирает нужные действия:

Помимо этого, основного меню имеются подменю. Настоятельно рекомендуем попробовать tmux-menus, вы сильно упростите себе жизнь. Вдобавок к обычным привязкам ключей, здесь применяются пользовательские команды.

tmux-sidebar

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

Боковая панель такая же, как и основная: каталоги пролистываются при помощи клавиш со стрелками.

Моя боковая панель  —  крайняя слева. Переходим к ней, как на обычной панели, т. е. prefix + <arrow_keys>.

tmux-sensible

Этим плагином вводится набор стандартных настроек TMUX. Стандартизация необходима при работе на удаленных серверах с другими людьми: благодаря tmux-sensible все остаются на одной странице, не пропинговывая других и не считывая каждые две минуты tmux.conf.

Вот и я внес в tmux.conf не много изменений: получил их из tmux-sensible.

tmux-mighty-scroll

Чтобы прокрутить панель/окно вверх или вниз, сначала обычно входят в режим копирования: prefix + [. Благодаря плагину tmux-mighty-scroll делать это вручную не нужно.

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

Работа плагина tmux-mighty-scroll, источник отредактирован

Работа tmux-mighty-scroll начинается после входа в командный режим и ввода set -g mouse on или задания этой команды в .tmux.conf.

С помощью плагина также перемещаются по панелям. Просто наводим курсор мыши на панель и нажимаем левую кнопку.

tmux-continuum

Вот преимущества следующего плагина tmux-continuum:

  • Непрерывное сохранение среды tmux.
  • Автоматический запуск tmux при включении компьютера/сервера.
  • Автоматическое восстановление при запуске tmux.

Так фактически сохраняются сеансы при перезапусках системы, причем автомагически. Даже в части с непрерывным сохранением, которое выполняется каждые 15 минут.

Это становится очень важным, если сервер «упал» и нужно вернуть все сеансы.

tmux-fzf

С помощью этого плагина управляют средой tmux: выполняются операции с панелями, окнами и сеансами, например изменение размеров панелей, создание новых и удаление старых сеансов и все те действия, которые обычно осуществляются с привязками ключей tmux. То есть это единая комбинация ключей для выполнения всех видов операций в tmux.

Вот меню tmux-fzf:

Этим плагином даже настраивают имеющиеся привязки ключей. А еще… Видите буфер обмена clipboard в этом меню? Ранее скопированное легко переиспользуется, но есть нюанс в виде зависимостей плагина. Одна из них  —  fzf, фактически это инструмент поиска fuzzy-finder по неточным совпадениям.

Работа буфера обмена начинается после установки CopyQ.

fzf применяется во многих других плагинах tmux, это хороший инструмент. Попробуйте его.

Несмотря на нюансы зависимостей, плагин хорош для работы. Особенно если не хочется запоминать привязки ключей.

tmux-resurrect

При выключении компьютера и повторном его включении сеансы tmux исчезают.

Это главная проблема, решаемая плагином tmux-resurrect: сеансы сохраняются даже при выключении или перезагрузке компьютера. Плагин особенно полезен при сбоях сервера и необходимости перезапустить его.

tmux-named-snapshot

А этим плагином сеансы в системе не только сохраняются, но и восстанавливаются. Похоже на сохранение в игре, но если вы надеетесь, что-то сломав, загрузить ранее сохраненный сеанс и отменить возникший хаос, то нет. Что сделано, то сделано.

Также снимку перед сохранением присваивается название.

tmux-mem-cpu-load

Этот плагин полезен, когда ресурсов ЦП/оперативной памяти сервера остается совсем впритык и нужно знать, сколько потребляется памяти или мощности процессора.

Отображаемое в tmux-mem-cpu-load значение памяти является динамическим, оно меняется автоматически.

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

set -g status-right '#[fg=green]#($TMUX_PLUGIN_MANAGER_PATH/tmux-mem-cpu-load/tmux-mem-cpu-load --colors --powerline-right --interval 2)#[default]'

Или с помощью prefix: входим в командный режим и вводим ту же строку.

tmux-prefix-highlight

Этот плагин проявляется только при нажатии префиксной клавиши TMUX. Подсвечивание отображается в строке состояния под сеансом TMUX. Полезность этого плагина несомненна.

tome

Tome  —  это интерактивный сценарий, в котором хранятся команды оболочки. Плагином предоставляется возможность доступа к этим сценариям и выполнения команд без копирования и вставки. Удобно? Так и есть.

Но ведь для этого уже существуют псевдонимы.

Да, но мне не хотелось сохранять команду импорта/экспорта резервных копий базы данных MySQL внутри .bash_aliases или приходилось запускать команды из файла README. Tome кажется более организованным подходом к хранению и выполнению команд.

При нажатии prefix + shift + p и получении доступа в tome создается сценарий, если его еще нет. В Vim при этом открывается пустой файл, у которого нет названия, ведь он еще нигде не сохранен.

Нажимаем i и входим в режим редактирования, а по завершении выходим с помощью esc.

Сохраняемся, нажимая shift: + w + <file_name>. <file_name>  —  это название сохраняемого сценария.

Выходим с помощью shift: + q.

Главное  —  наличие редактора терминала Vim или NeoVim, в котором можно использовать любые написанные там команды и в любой последовательности.

Вот официальная демоверсия:

Источник: репозиторий tome

tmux-logging

Этим плагином регистрируются действия, выполняемые внутри сеанса TMUX. Иногда приходится возвращаться к ним и разгребать завалы на сервере. Для этого и нужен tmux-logging.

Ранее выполненные команды просматриваются с помощью history. Этой командой они выводятся списком в хронологическом порядке: последняя  —  самая поздняя команда в истории. Но так не получить точного поведения сервера. И о работе той или иной команды тогда, когда осуществлялось предыдущее с ним взаимодействие, тоже не узнать.

Этим плагином команды вместе с выходными данными сохраняются в файле *.log каталога $HOME.

А еще делается текстовый скриншот текущего открытого сеанса терминала. То есть все, что видно в терминале, теперь сохраняется в файле *.log.

Нажимая prefix + shift + p, запускаем/останавливаем запись действий терминала, а с помощью prefix + alt + p делаем скриншот текущего сеанса.

Вот как меняется строка состояния внизу, когда начинается/останавливается запись:

Extrakto

Это что-то вроде диспетчера буфера обмена на Windows, Mac и Linux. Но и для него имеется плагин tmux. Extrakto тоже применяется в Vim и NeoVim.

Этим плагином в сеансе терминала выделяется текст. Текстом поискового запроса строки́ поиска выявляются неточные совпадения со всем, что имеется в сеансе. Для неточного сопоставления применяется fzf.

Плагин открываем нажатием комбинации prefix + tab:

Пока отображается всплывающее окно плагина, доступно выполнение операций. Очень удобно.

Достойные упоминания

Вот еще плагины, которые стоит попробовать.

muxile

При помощи этого плагина сеансы tmux контролируются с телефона. Очень удобно, когда находишься в пути и кто-то из команды звонит, потому что «полетел» сервер или что-то в этом роде.

Человек у компьютера/сервера должен запустить сеанс TMUX и поделиться им со звонящим. Для доступа к сеансу сканируется QR-код. После делается практически все что угодно.

Вот видео-обзор.

Хотя этот плагин использовался не так часто, в аварийных ситуациях он будет полезен.

treemux

А это боковая панель с современным файловым обозревателем Nvim-Tree для текущего пути с акцентом на двунаправленном взаимодействии. Она смотрится намного выигрышнее tmux-sidebar, хотя зависит от языка LUA и, конечно же, NeoVim.

Невероятно, что мышью здесь меняются размеры боковой панели и таким же образом получается доступ к файлам панели. Если дополнительная зависимость  —  не проблема для вас, выберите этот плагин вместо tmux-sidebar.

Источник: репозиторий treemux

Как создать плагин TMUX

В TMUX Plugin Manager имеется соответствующее руководство. Для создания плагина нужно разбираться в Git и сценариях оболочки. Вот и все.

Воспользуйтесь ссылками, и все получится.

Заключение

Мы рассмотрели не все плагины. И, возможно, не ваши любимые. Это вовсе не значит, что другие плагины бесполезны или не стоят внимания. Все они достойные и связаны с конкретным вариантом применения. Описаны лишь самые частотные, рабочие.

Изучая плагины, я наткнулся на tmux-browser, в исходном коде которого обнаружил опечатку. Исправив ее, отправил запрос на включение изменений в репозиторий проекта.

Исправил вот что:

Исходный код tmux-browser

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

Эти знания станут апгрейдом вашего рабочего места. TMUX  —  отличный инструмент, который благодаря плагинам становится не только удобнее, но и функциональнее, а обычный терминал  —  многомернее.

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи M. Hammad Hassan: Useful TMUX Plugins Which I Frequently Use At Work

Предыдущая статьяШпаргалка по Kotlin Flow для продвинутых инженеров Android
Следующая статья10 концепций разработчика Laravel