如何在 tmux 启动时创建布局和 运行 命令?

How to create a layout and run commands in at tmux launch?

我正在尝试编写我可以 run/source 的脚本,以便 tmux 设置特定的布局和 运行 命令。我有一些结果。

以下是我到目前为止所写的内容:

selectp -t 1
splitw -v -p 15
splitw -h -p 50

selectp -t 1
send-keys 'cd ~/code/octoly' Enter
send-keys 'vim .' Enter

selectp -t 2
send-keys 'cd ~/code/octoly' Enter
send-keys 'drails c' Enter

new-window -d -n server -c ~/code/octoly
selectw -t 2
send-keys 'fd' Enter

splitw -h -p 50
send-keys 'cd ~/code/octoly' Enter
send-keys 'drails s' Enter

selectp -t 1
splitw -v -p 50
send-keys 'cd ~/code/octoly' Enter
send-keys 'be guard' Enter

第二个 window 和窗格的创建或多或少起作用。尽管窗格没有给我想要的东西。它们都是在第一个window中创建的,none在第二个中创建的。

这是我 运行 启动 tmux 的方式:

tmux new 'tmux move-window -t 99 \; source-file ~/.tmux/session_octoly'

此外,我真正迷失的地方是,如果我 运行 一个接一个地手动执行每个命令,它会给我想要的东西。

我在这里错过了什么?

首先,您在 new-window 中使用 -d 标志,它不会使新 window 成为 当前 window:

If -d is given, the session does not make the new window the current window.

但是我可能会以不同的方式启动 tmux,使用 tmux -f 标志来使用 ad-hoc 配置文件来执行您想要的操作。
在您的环境中运行安装之前请检查命令。

# File: ~/.tmux/octoly.conf

# Load default .tmux.conf
source-file ~/.tmux.conf

# setup octoly session
new-session -s octoly -n editor -d -c ~/code/octoly
send-keys 'vim .' Enter

split-window -v -p 15 -c ~/code/octoly
send-keys 'drails c' Enter
split-window -h -p 50 -c ~/code/octoly

# Select vim pane 
select-pane -t 1

# create second window
new-window -n server -c ~/code/octoly
send-keys 'fd' Enter

split-window -h -p 50 -c ~/code/octoly
send-keys 'drails s' Enter

select-pane -t 1
split-window -v -p 50 -c ~/code/octoly
send-keys 'be guard' Enter

# Optional step, reselect window 1 (the one with vim)
select-window -t editor

然后您需要启动 tmux 使用:

tmux -f ~/.tmux/octoly.conf attach

另一种选择是构建一个 bash 发送相同命令的脚本。

注意:我每次使用cd命令时都使用-c标志来指定起始目录,而不是运行ning .鉴于每个命令都在同一文件夹中 运行,您可以在 split-window 命令中将它们取出。