首页 > 解决方案 > Tmux 从不同的文件加载多个环境

问题描述

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

第一个文件构建一个包含 1 个窗口和 3 个窗格的会话。Second File 建立一个有 2 个窗口的会话,第一个窗口有 2 个窗格,第二个窗口有一个窗格。

喜欢:

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

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

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

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

并且 tmux ls 仅列出一个会话。

(conf文件本身运行没有问题)

如何通过 tmux 的不同 conf 文件构建多个会话,并且仅使用 tmux no tmuxinator no tmuxp 或其他任何东西?

还是我应该有一个大的 conf 文件来构建现在在 muliply 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

脚本配置文件

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

标签: tmux

解决方案


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

命令:

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

仅当您想加载另一个 tmux 配置文件而不是默认配置文件时才应使用。

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

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

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

PS我做了一个小功能来加载文件不太复杂。

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}

推荐阅读