[VIM, Оболочки] Ты еще не используешь tmux наполную! (Наверное)

Автор Сообщение
news_bot ®

Стаж: 6 лет 8 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
25-Авг-2020 14:33

Привет, Хабр! Представляю вашему вниманию перевод статьи "(たぶん)君はまだtmuxの真の力を引き出せていない".
Содержание
  • Что такое tmux
  • Запуск и начало новой сессии
  • Открытие нового окна
  • Переходы между окнами
  • Разделение окон и создание панелей
  • Передвижение между панелями
  • Передвижение между сессиями
  • [Практическое использование] Переадресация отображаемого содержания в tmux
  • [Практическое использование] Отображение названия ветки Git в информационном поле
  • [Практическое использование] Отображение пути текущей операции
  • [Практическое использование] Вызов сниппета
  • Ссылка на настройки .tmux.conf
  • Совместимость версий tmux

Что такое tmux
tmux — терминальный мультиплексор. Когда работаешь на машине, использующую SSH, исполняешь увесистую программу, но хочешь без прекращения исполнения перейти к другой задаче и т.д., то tmux может очень пригодиться.
Но возможности tmux на этом на этом не заканчиваются. Есть различные удобные варианты использования tmux, что я и хочу продемонстрировать на примерах ниже.
Базовая идея похожа на моды в Vim. С помощью prefix’a (зарезервированные key bindings или привязка клавиш) можно изменить мод, по умолчанию используется привязка ctrl + b.
Запуск и начало новой сессии
Если ваша ОС — Ubuntu или Debian, вы можете установить tmux командой `sudo apt-get install tmux`. На MacOS — brew install tmux.
Команда для запуска:
$ tmux

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


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

Переходы между окнами
Можно также свободно переключаться между созданными окнами. Стандартные связки для этого — «prefix + p» (p — previous) и «prefix + n» (n — next).
Использовать prefix не всегда удобно, поэтому я для себя кастомизировал связки клавиш для перехода между окнами: shift + rightKey для следующего окна и shift + leftKey для предыдущего.

Разделение окон и создание панелей
Разделение окон в tmux похоже на разделение в vim. Вы делите окно на несколько панелей, тем самым в одном окне можно открыть vim, в другом htop, а в третьем выполнять программу.
Без привязки клавиш, команды для разделения окна — prefix + «split-window -h», prefix + «split-window -v».
Так как прописывать это каждый раз не особо хочется, я сделал для себя хоткеи в виде prefix + "-", prefix + "|".

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

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

[Практическое использование] Переадресация отображаемого содержания в tmux
По сути, tmux является своего рода виртуальным терминалом, содержащимся в директории /dev/pts/{fooBar}. Для каждой панели создается такая же директория.
Другими словами, если мы определим {fooBar} каждой панели, мы сможем передавать содержимое панели X, разделив, например, на stderr и stdout, на панели Y и Z.
Таким образом можно выводить на разные панели stderr и stdout программы, которые вы пишите, а также использовать терминал как лог операций.

[Практическое использование] Отображение названия ветки 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, но он, по сути, может вернуть любую текстовую информацию. Например, если правильно настроить, можно в статус баре отображать даже таймлайн своего твиттера.

[Практическое использование] Отображение пути текущей операции
Часто, прыгая по терминалу, хочется понять, в какой ты директории, в каком пути она содержится.
Не хочется для этого лишний раз прописывать pwd, поэтому можно отобразить путь текущей операции в том же месте, где отображается путь до текущей панели.
setw -g pane-border-format '#{pane_tty} | #{pane_current_path}'


[Практическое использование] Вызов сниппета
Несмотря на то, что tmux является менеджером сессий с функцией разделения терминала, он может выполнять некоторые функции IDE (круто, не правда ли?). Вы можете забиндить свои хоткеи на специальную настройку send-keys и вызвать их в терминале.
Например, если настроить send-keys как на моем примере ниже, можно просто нажать prefix + 1 и вывести команды import, необходимые для работы с python.
bind -T prefix -n 1 send-keys "import os\nimport sys\n"


Ссылка на настройки .tmux.conf
Вот тут
Совместимость версий tmux
Иногда случается, что некоторые настройки tmux не работают — в этом случае, его версия может быть либо слишком новой, либо слишком старой.
Все вышеописанное и конфиг, на который я оставил ссылку, — для tmux версии 2.8 и выше. Если у вас что либо не работает, проверьте, подходит ли вам данная версия.
Если вы соберетесь самостоятельно что-то отлаживать, то прежде всего стоит обратиться к man tmux — самой надежной документации по tmux на данный момент.
Ссылка на оригинал данной статьи тут
Мы будем очень рады, если вы расскажете нам, понравилась ли вам данная статья, понятен ли перевод, была ли она вам полезна?

===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_vim, #_obolochki (Оболочки), #_tmux, #_vim, #_terminal (терминал), #_vim, #_obolochki (
Оболочки
)
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 01-Ноя 08:39
Часовой пояс: UTC + 5