如何创建已打开多个窗口的tmux会话?

时间:2018-02-26 22:09:56

标签: bash tmux

我已经尝试过我可以在网上找到的所有内容,但没有任何效果。我尝试了以下方法,通常的结果是只有一个窗口的新tmux会话。

只需在.bashrc。

的.bashrc

tmx () {
    tmux new-session -A -s SessionName
    tmux new-window -n Win1
    tmux new-window -n Win2
    tmux new-window -n Win3
    tmux new-window -n Win4
    tmux attach-session -d -t SessionName # with and without this line
    tmux select-window -t Win1 # with and without this line
}

再次只在.bashrc。

的.bashrc

tmx () {
    tmux new-session -A -s SessionName ||
    tmux \
        neww -s Win1 \; \
        neww -s Win2 \; \
        neww -s Win3 \; \
        neww -s Win4 \; \
        selectw -t Win1
}

以下尝试将是我首选的方法,因为它对我来说最有意义。

在没有第一行的情况下调用tmux会使所有其他行导致出现“找不到会话”错误。这没有任何意义,因为我们不应该为了达到这个东西而调用tmux吗?我最初的计划是创建一个会话并让这个文件自动设置我的tmux。

.tmux.conf

new-session -A -s SessionName
new-window -t Win1
new-window -t Win2
new-window -t Win3
new-window -t Win4
attach-session -d -t SessionName # with and without this line
select-window -t Win1 # with and without this line

此方法,无论是使用别名还是创建函数,通常都会导致“无法连接到服务器”。但是当摆弄它以至于不会发生时,它会产生与其余部分相同的结果。

的.bashrc

alias tmx='tmux source-file "~/.tmux/mysession"'

.tmux / MySession的

new-session -A -s SessionName
new-window -t Win1
new-window -t Win2
new-window -t Win3
new-window -t Win4
attach-session -d -t SessionName # with and without this line
select-window -t Win1 # with and without this line

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您需要以分离模式(-d)创建会话;否则,您的脚本会阻塞,直到您从新会话中分离。同样,您的脚本将在tmux attach-session之后阻塞,直到您分离为止,因此您需要先选择正确的窗口。请注意,您可-d new-window以避免将每个新窗口设置为当前窗口,从而无需再调用select-window

是的,-d被大量使用。

tmx () {
    # Use -d to allow the rest of the function to run
    tmux new-session -d -s SessionName
    tmux new-window -n Win1
    # -d to prevent current window from changing
    tmux new-window -d -n Win2
    tmux new-window -d -n Win3
    tmux new-window -d -n Win4
    # -d to detach any other client (which there shouldn't be,
    # since you just created the session).
    tmux attach-session -d -t SessionName
}