我如何设置tmux,使它启动与指定的窗口打开?


当前回答

你可以从.tmux.conf文件中获取不同的会话,如下所示:

# initialize sessions
bind S source-file ~/.tmux/session1 
bind s source-file ~/.tmux/session2

然后按照你的要求设置会议的格式:

#session1
new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

这将打开2个窗口,其中第二个窗口将命名为foo/bar,并将垂直分为两半(50%),foo运行在bar之上。焦点将在窗口2 (foo/bar),顶部窗格(foo)。

然后,您可以使用PrefixShifts启动首选的tmux会话(在本例中为session1)

其他回答

py允许您在每个窗格中简单地列出所需的命令,并以包含三个破折号的行作为前缀。

下面是一个示例smux文件,它启动了三个窗格。

---
echo "This is pane 1."
---
cd /tmp
git clone https://github.com/hq6/smux
cd smux
less smux.py
---
man tmux

如果你把它放在一个叫做Sample的文件里。Smux,然后可以运行以下命令来启动。

pip3 install smux.py
smux.py Sample.smux

完全免责声明:我是smux.py的作者。

这个脚本启动一个名为“e”的会话和三个窗口

#!/bin/sh 
tmux new-session -s e   -n etc -d 'cd /etc; bash -i'
tmux new-window  -t e:1 -n home   'cd ~; bash -i'
tmux new-window  -t e:2 -n log   'cd /var/log; bash -i'

tmux select-window -t e:1
tmux -2 attach-session -t e

创建新会话时,可以使用tmux钩子执行命令。具体来说,这是使用会话创建的钩子实现的。

例如,你可以在~/.tmux.conf文件中添加以下代码,将屏幕分成三部分,top在右下角运行:

set-hook -g session-created 'split -h ; split -v top'

这种方法的优点是,您不必以任何特殊的方式(即shell脚本或别名)运行tmux来获得所需的结果。您还可以将其与tmux new-session -A -s mysession结合使用,这样钩子命令只在您第一次创建会话时运行,而不是在后续的附件上运行。

该功能是由d15d54c2c在2016年添加的。包含它的第一个发行版是2.4。

如果你只是想把屏幕分成2个窗格(水平),你可以运行这个命令(不需要tmux或shell脚本):

tmux new-session \; split-window -h \;

你的屏幕会是这样的:

[ks@localhost ~]$                      │[ks@localhost ~]$ 
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
                                       │
[10] 0:ks@localhost:~*                  "localhost.localdomain" 19:51 31-янв-16

为了简单地打开带有多个窗格的tmux并运行一些命令,我创建了以下bash文件:

#!/bin/bash
tmux split-window -v -p 30 -c ~/path/to/folder1
tmux split-window -h -p 66 -c ~/path/to/folder2
tmux split-window -h -p 50 'mongod'

运行bash文件得到以下内容:

-----------------------------------
|                                 |
|---------------------------------|
|  folder1  | folder2  |  mongod  |
-----------------------------------