Конфигурация автоматизации сборки в tmux - PullRequest
0 голосов
/ 21 февраля 2019

2 панели tmux, уложенные вертикально, используются в моей разработке.Я кодирую в верхнем и строю в нижнем.

Мой способ сделать это - отправить следующие ключи из верхней области кодирования, добавив следующие строки в файл .tmux.conf

bind b send-keys -t.- 'clear' Enter 'cmake ~Project_a/Build/' Enter

Однако у меня есть несколько проектовчтобы работать в настоящее время, скажем, project_b и project_c отдельно от project_a.Каждый раз, когда я переключаю свою работу на другой проект, мне нужно изменить определение bind d в файле конфигурации.

Есть ли способ создать функцию SetProject(), которая может быть вызвана Tmux, и когда я введу project_c, тогда ключ b перейдет в процесс сборки для project_c, поэтому я небольше не нужно каждый раз менять этот конфигурационный файл

1 Ответ

0 голосов
/ 21 февраля 2019

TL; DR: используйте #{pane_current_path} с оператором if в вашей привязке.

AFAICT, нет способа получить функцию tmux для получения ввода.Хотя можно связать команды tmux для использования переменных, например,

bind-key C-t display-message "words and $bash_environment_variable"

, проблема в том, что tmux проверяет только среду, из которой вы запустили tmux для этой переменной, а не среду текущей панели, поэтому вы должнынеобходимо отсоединиться от tmux, установить переменную, заново установить tmux и повторно набрать .tmux.conf, чтобы это работало.

Единственное, о чем я могу думать, это если вы находитесь в этом каталоге, когда вам нужнопостроить, имея tmux проверить путь текущей панели.Вы можете сделать что-то вроде

bind-key b if-shell '[[ #{pane_current_path} =~ /path/to/projA' '<build projA>' 'if shell projB' ...

см. здесь для примера того, как правильно делать множественные операторы if (операторы if-elif бедняка) в tmux.

Если вы все настроите правильно, возможно, можно будет избежать части if-shell и просто # {pane_current_path} как часть пути для команды сборки.

Кроме того, вы можете использовать текущую нижнюю панельпанель и целенаправленно выберите верхнюю панель в вашей команде tmux.Вот пример:

tmux send-keys -t sess:0.2 'sudo htop' Enter

где - имя сеанса, <0> - номер окна (0-индексированный, если вы его не изменили), а <2> - номер панели (также нуля и индексированныйидет влево-> вправо вверх-> снизу, как и следовало ожидать).

...