Tmux从不同的文件加载多个环境

时间:2018-08-14 21:05:48

标签: tmux

您好,我想从不同的文件加载多个环境。例如:

第一个文件建立一个具有1个窗口和3个窗格的会话。 第二个文件使用两个窗口构建一个会话,第一个窗口包含两个窗格,第二个窗口包含一个窗格。

赞:

tmux -f /path/to/file/basic.conf a

然后从第一次会话中分离出来后,我想以相同的方式加载其他环境。

tmux -f /path/to/file/scripting.conf a

但是当我启动第二个命令时,我将附加到第一个会话(basic.conf)。 但是我希望当我启动第二个脚本时,我将附加到第二个会话。

tmux ls仅列出一个会话。

(conf文件本身正在正常运行)

怎么可能通过tmux来通过不同的conf文件建立多个会话,并且仅使用tmux而不使用tmuxinator而不使用tmuxp或其他任何东西?

还是我应该有一个大的conf文件来构建多文件conf文件中的所有内容?

basic.conf

SESSION_NAME="basic"
FIRST_WINDOW="shells"
SECOND_WINDOW="console"

source ~/.tmux.conf

new-session -s $SESSION_NAME -n $FIRST_WINDOW -d

split-window -h -t $SESSION_NAME
split-window -v -t $SESSION_NAME

new-window -n $SECOND_WINDOW -t $SESSION_NAME

select-window -t $SESSION_NAME:0.0

scripting.conf

SESSION_NAME="script"
FIRST_WINDOW="editor"
SECOND_WINDOW="console"

source ~/.tmux.conf

new-session -s $SESSION_NAME -n $FIRST_WINDOW -d

split-window -v -p 5 -t $SESSION_NAME

send-keys -t $SESSION_NAME:0.0 'cd ~/Code' C-m
send-keys -t $SESSION_NAME:0.0 'vim' C-m
send-keys -t $SESSION_NAME:0.1 'cd ~/Code' C-m
send-keys -t $SESSION_NAME:0.1 C-l C-m

new-window -n $SECOND_WINDOW -t $SESSION_NAME
send-keys -t $SESSION_NAME:1 'cd ~/Code' C-m

select-window -t $SESSION_NAME:0

1 个答案:

答案 0 :(得分:0)

我想我自己找到了解决方法。

命令:

tmux -f /path/to/file.conf a 

仅在您要加载另一个tmux配置文件而不是默认文件时使用。

如果您想启动多个会话(这些会话已在文件中预先配置),则必须执行以下操作:

tmux source-file -q .dotfiles/tmux/enviroments/basic.conf && tmux attach -t basic

也许有更好的解决方案,但是现在这可以解决我的问题。

P.S。我做了一些小功能来使文件加载变得更简单。

function muxload(){

    if [ -f ~/.dotfiles/tmux/enviroments/$1 ]; then
        tmux source-file -q ~/.dotfiles/tmux/enviroments/$1 && tmux attach -t $1
    fi

    if [ -f ~/.dotfiles/tmux/enviroments/$1.conf ]; then
        tmux source-file -q ~/.dotfiles/tmux/enviroments/$1.conf && tmux attach -t $1
    fi

}

像这样运行它:

muxload {name_of_conf_file}