Создание запускаемых конфигураций tmux?

24

Я часто делаю то же самое с tmux:

  1. cd в данный каталог.
  2. tmux
  3. Переименуйте окно в то, что я делаю.
  4. Разбить окно по вертикали на 50%.
  5. Запустите один процесс в левом окне.
  6. Запустите другой процесс в правом окне.
  7. Прибыль.

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

Нафтули Кей
источник
Как насчет псевдонима оболочки?
Марко

Ответы:

22

Archwiki спасает день! Инициализация сеанса на странице tmux дает пример.

Тем не менее, вместо того чтобы начинать tmux , как tmux, tmux new -s nameбудем называть сессию , когда он начинает вместо того , чтобы дать ему номер.

Инициализация сеанса


Tmux может открыть сеанс с предварительно загруженными окнами, включив эти данные в ~ / .tmux.conf:

new  -n WindowName Command
neww -n WindowName Command
neww -n WindowName Command

Чтобы начать сеанс с разделенными окнами (несколькими панелями), добавьте команду splitw под новостью, которую вы хотите разделить; таким образом:

new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

откроет 2 окна, второе из которых будет называться foo / bar и будет разделено вертикально пополам (50%), при этом foo будет работать над баром. Фокус будет в окне 2 (foo / bar), на верхней панели (foo).

Примечание. Нумерация для сеансов, окон и панелей начинается с нуля, если в вашем .conf не указан базовый индекс 1

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

# initialize sessions
bind F source-file ~/.tmux/foo
bind B source-file ~/.tmux/bar
обкрадывать
источник
6

Ответ Роба великолепен и объясняет, как именно обрабатывать сессии изнутри самого tmux. Теперь, если вы не возражаете против использования стороннего инструмента, tmuxinator - отличный проект, который помогает легко создавать и управлять сессиями .

Каждый сеанс управляется файлом конфигурации, который позволяет вам определять все ваши окна и панели вместе с их макетами и командами по умолчанию для запуска в них. Это также позволяет вам определять каталог проекта по умолчанию, конкретный сокет и демоны, которые должны быть запущены (например, mysql). В довершение всего, он также предоставляет простой способ присоединения к ним: просто запустите, mux [session-name]и он начнет сеанс или присоединится к нему, если он уже запущен. Я использую это в течение некоторого времени и люблю это (спасибо азиз !).

https://github.com/aziz/tmuxinator

JC Yamokoski
источник