从文件加载tmux会话

问题描述 投票:2回答:3

我希望能够在tmux中加载保存在文件中的会话,包括窗口/窗格和外壳程序设置。我在〜/ .tmux / my_session中有这个:

new -d -s test1
neww -k -t test1:1 top

new -d -s test2
neww -k -t test2:1 -n '2w1' 
neww -t test2 -n '2w2' 

现在,我从tmux中获取它,并且工作正常:我有两个分离的会话test1(带有一个窗口)和test2,带有2个窗口。但我想实际上也运行一些命令,例如将最后一行替换为:

neww -t test2 -n '2w2' 'cd ~/work; ./myscript.zsh ; ls'

以便将其CD到目录,运行一些安装脚本,打开lsstays以便进一步使用。但是,根据手册,在命令完成后,窗口将自动关闭。有remain-on-exit选项,但尚不清楚如何将其与neww结合使用,以使其实际起作用...

还手动列出了neww的-c标志以设置起始目录,但我安装的homebrew似乎无法识别。

[tmux v1.6似乎能够做到,因此必须做到这一点(但是teamocil不能将会话分开,这对我来说是必不可少的)。

谢谢!

terminal tmux
3个回答
2
投票

答案是发送键:

teamocil

1
投票

我很确定tmuxinator可以将它们分开。


0
投票

[[cannonical的实现方法是new -d -s test1 neww -k -t test1:1 -n '1w1' send-keys -t test1:1 "echo '1w1'" C-m new -d -s test2 neww -k -t test2:1 -n '2w1' neww -t test2 -n '2w2' send-keys -t test2:1 "echo '2w1'" C-m send-keys -t test2:2 "echo '2w2'" C-m display-message "Sessions loaded!" (有关详细信息,请参见手册页)

这应该与所有tmux命令一起使用,甚至具有一些基本的if / else逻辑:

tmux source-file

我使用此方法的方式是通过编写的shell函数将其附加到现有会话或启动服务器并提供指定文件的源代码:

执行此操作的标准方法是%if #{==:#{host},myhost} set -g status-style bg=red %elif #{==:#{host},myotherhost} set -g status-style bg=green %else set -g status-style bg=blue %endif (有关详细信息,请参见[手册页]]

这应该与所有tmux命令一起使用,甚至具有一些基本的if / else逻辑:

tmux source-file

然后创建一个别名来表示function tmux_session()
{
    tmux attach-session -dt "$1" &>/dev/null || tmux start-server \; \
      source "${HOME}/.tmuxrc/${1}"
}
,现在您可以使用同一命令始终返回会话。
© www.soinside.com 2019 - 2024. All rights reserved.