在tmux中构建自动化配置

问题描述 投票:0回答:1

在我的开发中使用了垂直堆叠的2个tmux窗格。我在上面编码,在底部编码。

我这样做是通过在.tmux.conf文件中添加以下行从上面的编码窗格发送以下密钥

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

但是,我目前有几个项目可以使用,比如项目_a和project_c。每当我在不同项目上切换工作时,我都需要更改配置文件中的绑定d定义。

有没有办法创建一个可以由Tmux调用的函数SetProject(),当我输入project_c然后b键将更改为project_c的构建过程,所以我不必每次都更改此配置文件

key-bindings tmux
1个回答
1
投票

TL; DR:在绑定中使用带有if语句的#{pane_current_path}

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' ...

请参阅here,了解如何在tmux中正确执行多个if语句(穷人的if-elif语句)。

如果设置正确,则可以避免使用if-shell部分,只能将#{pane_current_path}作为构建命令路径的一部分。

此外,您可以使用底部窗格的当前窗格,并有目的地选择tmux命令中的顶部窗格。这是一个例子:

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

会话名称在哪里,<0>是窗口编号(除非你已经改变了,否则为0索引),<2>是窗格编号(也是零索引并向左 - >右上 - >底部像你一样期望)。

© www.soinside.com 2019 - 2024. All rights reserved.