Tmux windows and panes

Содержание
  1. todgru / starttmux.sh
  2. This comment has been minimized.
  3. Niouby commented Jul 29, 2016
  4. This comment has been minimized.
  5. joshbaptiste commented May 20, 2017
  6. This comment has been minimized.
  7. azizLIGHT commented Mar 23, 2018
  8. This comment has been minimized.
  9. jpdippenaarS commented May 3, 2018
  10. This comment has been minimized.
  11. iosifv commented Sep 16, 2018
  12. This comment has been minimized.
  13. AffanIndo commented Jan 14, 2019
  14. Ты еще не используешь tmux на полную! (Наверное)
  15. Содержание
  16. Что такое tmux
  17. Запуск и начало новой сессии
  18. Открытие нового окна
  19. Переходы между окнами
  20. Разделение окон и создание панелей
  21. Передвижение между панелями
  22. Передвижение между сессиями
  23. [Практическое использование] Переадресация отображаемого содержания в tmux
  24. [Практическое использование] Отображение названия ветки Git в статус-баре
  25. [Практическое использование] Отображение пути текущей операции
  26. [Практическое использование] Вызов сниппета
  27. Ссылка на настройки .tmux.conf
  28. Совместимость версий tmux
  29. Moving tmux pane to window
  30. 7 Answers 7
  31. Шпаргалка по работе с Tmux (терминальный мультиплексор)
  32. 1. Установка
  33. 2. Конфигурационные файлы
  34. 3. Работа с Tmux

todgru / starttmux.sh

#! /bin/sh
#
# Setup a work space called `work` with two windows
# first window has 3 panes.
# The first pane set at 65%, split horizontally, set to api root and running vim
# pane 2 is split at 25% and running redis-server
# pane 3 is set to api root and bash prompt.
# note: `api` aliased to `cd

/path/to/work` # session= » work « # set up tmux tmux start-server # create a new tmux session, starting vim from a saved session in the new window tmux new-session -d -s $session -n vim # «vim -S

/.vim/sessions/kittybusiness» # Select pane 1, set dir to api, run vim tmux selectp -t 1 tmux send-keys » api;vim » C-m # Split pane 1 horizontal by 65%, start redis-server tmux splitw -h -p 35 tmux send-keys » redis-server » C-m # Select pane 2 tmux selectp -t 2 # Split pane 2 vertiacally by 25% tmux splitw -v -p 75 # select pane 3, set to api root tmux selectp -t 3 tmux send-keys » api » C-m # Select pane 1 tmux selectp -t 1 # create a new window called scratch tmux new-window -t $session :1 -n scratch # return to main vim window tmux select-window -t $session :0 # Finished setup, attach to the tmux session! tmux attach-session -t $session

This comment has been minimized.

Copy link Quote reply

Niouby commented Jul 29, 2016

I love you! You help me to automatize all my tmux lauch, I will save so much time each morning!

This comment has been minimized.

Copy link Quote reply

joshbaptiste commented May 20, 2017

Great script, helped me figure out default startup parameters,, cheers

This comment has been minimized.

Copy link Quote reply

azizLIGHT commented Mar 23, 2018

Found this on google. Great way to startup common tasks

This comment has been minimized.

Copy link Quote reply

jpdippenaarS commented May 3, 2018

Rock star. Thanks!!

This comment has been minimized.

Copy link Quote reply

iosifv commented Sep 16, 2018

This comment has been minimized.

Copy link Quote reply

AffanIndo commented Jan 14, 2019

Thank you for this! But there are several things that I don’t understand.

What is the function of whitespace after C-m on line 20 and 24? I remove the whitespace and it is still works.

I try to use my script without tmux start-server , and it still work perfectly.

Once again, thank you! this gist is the best.

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

Привет, Хабр! Представляю вашему вниманию перевод статьи «(たぶん)君はまだ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, вы также можете создавать новые окна. Стандартная связка — «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/. Для каждой панели создается директория такого же формата.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Moving tmux pane to window

How do I move an existing pane into another window in tmux when I have multiple windows, and vice versa?

I’m coming from screen, where I can switch to the pane and then switch windows until I get to the one I want; tmux does not seem to allow this.

7 Answers 7

The command to do this is join-pane in tmux 1.4.

To simplify this, I have these binds in my .tmux.conf for that:

The first grabs the pane from the target window and joins it to the current, the second does the reverse.

You can then reload your tmux session by running the following from within the session:

join-pane is the answer. I too was having problems with my attempts to use it based on the tmux documentation. I discovered that the -t and -s switches seem to accept [session]:window and not [session:]window . That is to say that specifying the session is optional, but including the : is mandatory. (I am using tmux 1.5)

Therefore, in order to add a pane to the current window and place window 1 into the pane, the command would be ( Ctrl + B or whatever your bind key is, followed by).

You can then break them apart with break-pane which by default is: Ctrl + B ! If you want to bind it to a shortcut, I suggest NOT overriding a default binding like s, because down the road you will look on the internet for an answer that involves choose-session and it will not work on your system. Notice that break-pane is bound to ! and @ is right next to it and not bound to anything by default. For that reason I suggest this binding.

Alternately, to have an interactive chooser.

Alternately, to always join the most recently visited window.

NOTE: The -h causes it to stack the panes horizontally (with a vertical split) as opposed the default behavior which is the reverse.

The most important thing is that your LEARN whatever you choose to shortcut. Because if you just set it and forget it, you will be gimped when you find yourself on a foreign server. And let’s face it, the most important thing a terminal multiplexer gives you is reliable sessions on remote servers.

This completes my conversion from GNU Screen to Tmux. I’ll never look back.

Шпаргалка по работе с Tmux (терминальный мультиплексор)

На Хабрахабре Tmux (ти-макс) упоминался неоднократно, тем не менее, решил написать еще одну шпаргалку, т.к. в других некоторые важные моменты не показаны.

Tmux (терминальный мультиплексор) позволяет работать с несколькими сессиями в 1 окне. Вместо нескольких окон терминала к серверу — вы можете использовать одно. Позволяет подключаться/отключаться к текущему состоянию сессии. Запущенные программы и процессы продолжают работать. (Можно использовать вместо nohup, dtach).

Например, на работе правим файлы в Vim. Окно терминала с открытыми файлами, процессами. Отключаемся от сессии. Далее подключаемся к этой сессии из дома и получаем те же окна с открытыми файлами в Vim, процессами и т.д. Можно продолжить работу с того же момента, на котором остановились. Также удобно при разрыве связи. Дополнительно можно работать совместно с другими в терминале, если подключены к одной сессии. Каждый видит, что делает другой.

1. Установка

2. Конфигурационные файлы

С версии 2.1 для включения режима мыши (скролл, изменение размера панели, выбор панели и др.) нужно добавить в tmux.conf:

3. Работа с Tmux

Старт
# tmux //без параметров будет создана сессия 0
# tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

Префикс (с него начинаются команды)
(CTRL + b)

Новое окно (нажать CTRL+b, затем нажать с)

Список окон
// переключиться курсором вверх-вниз

Переключение
// следующее окно
// предыдущее окно
// переключиться на номер окна

Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.

Деление окна горизонтально

либо команда
# tmux split-window -h

Деление окна вертикально

либо команда
# tmux split-window -v

Переход между панелей
// либо режим мыши

Изменение размеров панелей
// либо режим мыши

Закрытие окон
// нужно подтвердить y
либо
# exit

Отключение от сессии

либо
# tmux detach

Список сессий
# tmux ls

Подключиться к работающей сессии
# tmux attach //подключение к сессии, либо к единственной, либо последней созданной
# tmux attach -t session1 // подключение к сессии session1

Завершение сессии
# tmux kill-session -t session1

Завершить все сессии
# tmux kill-server

Список поддерживаемых комманд
# tmux list-commands

Дополнительная информация
# man tmux

Читайте также:  Драйвер сканера для kyocera fs 1125mfp windows 10
Оцените статью