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

时间:2016-01-13 14:49:45

标签: tmux

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

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

asset1.Load(ValueString.CreateReader());

或多或少有效的是创建第二个窗口和窗格。虽然窗格不能给我我想要的东西。它们都是在第一个窗口中创建的,没有在第二个窗口中创建。

这是我开始运行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

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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

首先,您在-d中使用的new-window标记不会使新窗口成为当前窗口

  

如果给出-d,则会话不会使新窗口成为当前窗口。

但是,我可能会以不同的方式启动tmux,使用tmux -f标志来使用满足您需要的临时配置文件。
请在您的环境中运行之前检查命令。

# 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脚本。

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