Как настроить tmux так, чтобы он запускался с указанными открытыми окнами?
shell
production-environment
tmux
Сатору
источник
источник
bash --rcfile
красивой оболочкой для научного Linux с включенной конкретной версией devtools. Оставим это здесь, если кто-то попытается сделать то же самое.tmux new-window -n "git lg" "scl enable devtoolset-3 'bash --rcfile <(echo \"source \"$HOME/.bashrc\";cd ~/workspace/coolproject/;git lg\")'"
vim
там обозначает команду, которая должна быть выполнена в первой (и только в то время) панели окна. Если вы вместо этого хотите назвать сессию vim, тогда да, вы правы, вы должны использовать-s
флаг. Весь синтаксис:tmux new-session -d -s SessionName -n WindowName Command
Я пытался создать сложную сетку панелей, и мне приходилось иметь дело с переключением и разделением панелей снова и снова. Вот мои уроки:
Получает, что вы начали с новой сессии. Чтобы разделить его по горизонтали или вертикали, используйте
split-window -h
или-v
впоследствии, вот так:Создает 3 панели, вот так:
Чтобы запустить команды в этих панелях, просто добавьте их вместе с
send-keys 'my-command'
командой,C-m
которая ее выполняет:И итоговая сессия должна выглядеть так.
Теперь я попытался снова разделить нижнюю левую панель, поэтому переключаемся либо обратно, используя
last-pane
, или в более сложные окна,select-pane -t 1
где where1
- номер панели в порядке, созданном начиная с0
.Делает это. В основном, вы знаете, как обходиться с этим,
split-window
иselect-pane
это все, что вам нужно. Также удобно передавать с-p 75
процентом размера панели, созданной,split-window
чтобы иметь больше контроля над размером панелей.В результате сеанс выглядит так
Надеюсь, что это поможет
tmux
энтузиастам в будущем.источник
-h -p 30
создает горизонтальную панель с 30% доступной высоты;-v -p 75
то же самое для вертикали с шириной 75%.\:
? Я видел сценарии, работающие с этим и без него.\;
передает точку с запятой в tmux вместо bash, что позволяет отправлять команды одним вызовом tmux. stackoverflow.com/questions/20913198/…Вы можете использовать различные сессии из вашего,
.tmux.conf
например, так:А затем отформатируйте сессии, как вам требуется:
Это откроет 2 окна, второе из которых будет называться foo / bar и будет разделено вертикально пополам (50%), при этом foo будет работать над баром. Фокус будет в окне 2 (foo / bar), на верхней панели (foo).
Затем вы можете начать предпочитаемую сессию tmux (в данном случае session1) с помощью PrefixShifts
источник
Prefix Shift S
мне нужно быть в tmux, а поиск вашего файла пытается начать новый сеанс, который tmux не любит и не сделает, если вы не заставите его.Используйте tmuxinator - он позволяет вам настроить несколько сессий, и вы можете выбрать, какой из них запускать в любой момент времени. Вы можете запускать команды в определенных окнах или панелях и назначать заголовки окнам. Вот пример использования с разработкой приложений Django .
Пример файла конфигурации:
Смотрите README по ссылке выше для полного объяснения.
источник
посмотрите @ https://github.com/remiprev/teamocil
Вы можете указать свою структуру, используя YAML
источник
сессии1
создать псевдоним в .bashrc
источник
neww
? Я не могу найти эту команду нигде. ~ Похоже, что это такnew-window
, хотя я не могу понять, почему вы используете как длинную, так и короткую форму.Сначала у меня был подход от @jasonwryan, но если у вас более 2 конфигов, это может сбить с толку.
Итак, я создал функцию псевдонима:
У
~/.tmux/
меня есть несколько сессий для многих целей. Например, я работаю в разных компаниях, в которых есть среда разработки. Так что с помощью функции псевдонима выше я могу просто позвонить:tmx company1
и загрузить нужный мне конфиг.Обновление: цель "$ 2" после
tmux
команды в том, что вы можете передать дополнительные аргументы tmux.источник
no server running on /tmp/tmux-1000/default
). Вот почему мне нужно было исправить командуtmux new-session
. Ссылка github.com/fatso83/dotfiles/commit/…Из моего сценария "get.all", который я вызываю каждое утро для запуска нескольких последующих заданий "get.XXX", чтобы обновить отслеживаемое программное обеспечение. Некоторые из них автоматически выходят из игры. Другим требуется больше взаимодействия после завершения get (например, просьба собрать emacs).
источник
Если вы просто хотите разделить экран на 2 панели (скажем, по горизонтали), вы можете запустить эту команду (не требуются сценарии tmux или shell):
Ваш экран будет выглядеть так:
источник
И вот как я это делаю:
У меня есть один файл для каждого моего проекта. Также вы можете сгруппировать их, чтобы иметь некоторые для работы, некоторые для хобби проектов.
Также вы можете переместить его в
~/bin
папку, добавить егоPATH
и датьtmux_my_awesome_project
имя. Тогда вы сможете запустить его из каждого места.источник
Это работает для меня. Создание 5 окон с заданными именами и автоматический выбор
home
окна.источник
Попробуй братан , это проект начальной загрузки.
Это обеспечивает легкий API для взаимодействия с
tmux
.Это выглядит примерно так:
Чтобы запустить проект, достаточно выполнить следующую команду:
bro start <project_name>
Оформление экрана ниже, оно показывает, как начать работу
bro
и использовать егоtmux
API.https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif
источник
Плагин tmux-континуум автоматически сохранит ваш сеанс tmux и загрузит его при следующем запуске tmux, его будет проще настроить, чем некоторые из пользовательских скриптовых решений.
Чтобы сохранить сеанс по требованию, вы можете использовать плагин tmux-resurrect . tmux-resurrect также требуется для запуска tmux-континуума
источник
Для этого есть плагин tmux.
Проверьте tmux-воскресить
Или tmux-континуум
источник
Вы можете использовать ловушки tmux для выполнения команд при создании нового сеанса. В частности, это достигается с помощью
session-created
крючка.Например, чтобы разделить экран тремя способами, запустив htop в правом нижнем углу, вы можете добавить в свой
~/.tmux.conf
файл следующую строку :Преимущество этого метода в том, что вам не нужно запускать tmux каким-либо особым образом (например, сценарий оболочки или псевдоним), чтобы получить желаемый результат. Вы также можете объединить это с
tmux new-session -A -s mysession
описанным в этом другом ответе так , чтобы команды ловушек выполнялись только при первом создании сеанса, а не при последующих вложениях.Эта функция была добавлена d15d54c2c еще в 2016 году. Первый выпуск, включающий ее, - это 2.4.
источник
Вы должны указать это в вашем конфигурационном файле tmux (
~/.tmux.conf
), например:(открывается один сеанс с двумя окнами, в первом запущен mocp, а во втором - mutt, а другой отдельный сеанс с тремя пустыми окнами).
источник
Я создал этот скрипт . Для этого не нужен tmuxinator, ruby или другие. Это просто bash-скрипт, настраиваемый:
Файл с именем config должен содержать что-то вроде этого:
и код bash должен быть:
источник
tmux start_server
но сервер не запускается сам по себе. См. Github.com/tmux/tmux/issues/182Я просто попытался использовать все идеи на этой странице, и мне не понравилась ни одна из них. Я просто хотел решение, которое запустило tmux с определенным набором окон, когда мой терминал открылся. Я также хотел, чтобы он был идемпотентным, то есть открытие нового терминального окна перенесет сеанс tmux из предыдущего.
Приведенные выше решения часто имеют тенденцию открывать несколько сеансов tmux, и я хочу только один. Сначала я добавил это к своему
~/.bash_profile
:Затем я добавил следующее к своему
~/.tmux.conf
:теперь каждый раз, когда я запускаю терминал или запускаю tmux или что-то еще, я либо присоединяюсь к своей существующей желаемой настройке (названный сеанс
default
), либо создаю новый сеанс с этой настройкой.источник
tmux start_server
но сервер не запускается сам по себе. См. Github.com/tmux/tmux/issues/182Поддержка tmuxp конфигурации JSON или YAML и API Python. Простой файл конфигурации tmuxp для создания нового сеанса в синтаксисе YAML:
источник
Этот скрипт запускает сеанс с именем «е» и тремя окнами
источник