Русский
Русский
English
Статистика
Реклама

Из песочницы Ты еще не используешь tmux наполную! (Наверное)

Привет, Хабр! Представляю вашему вниманию перевод статьи "(tmux".

Содержание


  • Что такое tmux
  • Запуск и начало новой сессии
  • Открытие нового окна
  • Переходы между окнами
  • Разделение окон и создание панелей
  • Передвижение между панелями
  • Передвижение между сессиями
  • [Практическое использование] Переадресация отображаемого содержания в tmux
  • [Практическое использование] Отображение названия ветки Git в информационном поле
  • [Практическое использование] Отображение пути текущей операции
  • [Практическое использование] Вызов сниппета
  • Ссылка на настройки .tmux.conf
  • Совместимость версий tmux

Что такое tmux


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

Но возможности tmux на этом на этом не заканчиваются. Есть различные удобные варианты использования tmux, что я и хочу продемонстрировать на примерах ниже.

Базовая идея похожа на моды в Vim. С помощью prefixa (зарезервированные key bindings или привязка клавиш) можно изменить мод, по умолчанию используется привязка ctrl + b.

Запуск и начало новой сессии


Если ваша ОС Ubuntu или Debian, вы можете установить tmux командой `sudo apt-get install tmux`. На MacOS brew install tmux.

Команда для запуска:

$ tmux

Если хотите запустить tmux и сразу дать название новой сессии, используйте эту команду:
$ tmux new -s { Название сессии }

image

Открытие нового окна


Создав сессию в tmux, вы также можете создавать новые окна. Стандартная связка ctrl +b + c. Если вы сохранили свой prefix, можете использовать связку prefix + c. Скорее всего, значение c create, отсюда и такая связка.

image

Переходы между окнами


Можно также свободно переключаться между созданными окнами. Стандартные связки для этого prefix + p (p previous) и prefix + n (n next).

Использовать prefix не всегда удобно, поэтому я для себя кастомизировал связки клавиш для перехода между окнами: shift + rightKey для следующего окна и shift + leftKey для предыдущего.

image

Разделение окон и создание панелей


Разделение окон в tmux похоже на разделение в vim. Вы делите окно на несколько панелей, тем самым в одном окне можно открыть vim, в другом htop, а в третьем выполнять программу.

Без привязки клавиш, команды для разделения окна prefix + split-window -h, prefix + split-window -v.

Так как прописывать это каждый раз не особо хочется, я сделал для себя хоткеи в виде prefix + "-", prefix + "|".

image

Передвижение между панелями


Стандартные команды для передвижения между панелями сложноваты, не очень удобны в обращении, поэтому я и в этом случае назначил свои хоткеи: ctrl + shift + upKey, ctrl + shift + downKey, ctrl + shift + rightKey, ctrl + shift + leftKey.

image

Передвижение между сессиями


С помощью связки клавиш ctrl + t можно вызвать список сессий, а клавишами выбрать нужную сессию.

image

[Практическое использование] Переадресация отображаемого содержания в tmux


По сути, tmux является своего рода виртуальным терминалом, содержащимся в директории /dev/pts/{fooBar}. Для каждой панели создается такая же директория.

Другими словами, если мы определим {fooBar} каждой панели, мы сможем передавать содержимое панели X, разделив, например, на stderr и stdout, на панели Y и Z.

Таким образом можно выводить на разные панели stderr и stdout программы, которые вы пишите, а также использовать терминал как лог операций.

image

[Практическое использование] Отображение названия ветки Git в статус баре


Это лайфхак, который использует возможность чтения Shellscript и Python script из .tmux.conf файла конфигурации tmux.

Статус бар можно настроить следующей командой:

set-option -g status-right '#{host} #(tmux run-shell "tmux_hook --default true --git-path #{pane_current_path}")'

#{host} это, очевидно, имя хоста, а tmux run-shell запускает настраиваемый скрипт, который возвращает value в настройки статус бар.

tmux_hook это файл, который я создал для отображения времени и текущей ветки Git, но он, по сути, может вернуть любую текстовую информацию. Например, если правильно настроить, можно в статус баре отображать даже таймлайн своего твиттера.

image

[Практическое использование] Отображение пути текущей операции


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

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

setw -g pane-border-format '#{pane_tty} | #{pane_current_path}'

image

[Практическое использование] Вызов сниппета


Несмотря на то, что tmux является менеджером сессий с функцией разделения терминала, он может выполнять некоторые функции IDE (круто, не правда ли?). Вы можете забиндить свои хоткеи на специальную настройку send-keys и вызвать их в терминале.

Например, если настроить send-keys как на моем примере ниже, можно просто нажать prefix + 1 и вывести команды import, необходимые для работы с python.

bind -T prefix -n 1 send-keys "import os\nimport sys\n"

image

Ссылка на настройки .tmux.conf


Вот тут

Совместимость версий tmux


Иногда случается, что некоторые настройки tmux не работают в этом случае, его версия может быть либо слишком новой, либо слишком старой.

Все вышеописанное и конфиг, на который я оставил ссылку, для tmux версии 2.8 и выше. Если у вас что либо не работает, проверьте, подходит ли вам данная версия.

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

Ссылка на оригинал данной статьи тут

Мы будем очень рады, если вы расскажете нам, понравилась ли вам данная статья, понятен ли перевод, была ли она вам полезна?
Источник: habr.com
К списку статей
Опубликовано: 25.08.2020 12:13:42
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Vim

Оболочки

Tmux

Терминал

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru