- todgru / starttmux.sh
- This comment has been minimized.
- Niouby commented Jul 29, 2016
- This comment has been minimized.
- joshbaptiste commented May 20, 2017
- This comment has been minimized.
- azizLIGHT commented Mar 23, 2018
- This comment has been minimized.
- jpdippenaarS commented May 3, 2018
- This comment has been minimized.
- iosifv commented Sep 16, 2018
- This comment has been minimized.
- AffanIndo commented Jan 14, 2019
- Ты еще не используешь tmux на полную! (Наверное)
- Содержание
- Что такое tmux
- Запуск и начало новой сессии
- Открытие нового окна
- Переходы между окнами
- Разделение окон и создание панелей
- Передвижение между панелями
- Передвижение между сессиями
- [Практическое использование] Переадресация отображаемого содержания в tmux
- [Практическое использование] Отображение названия ветки Git в статус-баре
- [Практическое использование] Отображение пути текущей операции
- [Практическое использование] Вызов сниппета
- Ссылка на настройки .tmux.conf
- Совместимость версий tmux
- Moving tmux pane to window
- 7 Answers 7
- Шпаргалка по работе с Tmux (терминальный мультиплексор)
- 1. Установка
- 2. Конфигурационные файлы
- 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`
/.vim/sessions/kittybusiness»
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/
Другими словами, если мы определим
Таким образом можно выводить на разные панели stderr и stdout программы, которые вы пишете, а также использовать терминал как лог операций.
[Практическое использование] Отображение названия ветки Git в статус-баре
Это лайфхак, который использует возможность чтения Shellscript и Python script из .tmux.conf — файла конфигурации tmux.
Статус-бар можно настроить следующей командой:
#
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