tmux:如何自动打开会话,窗口和窗格

时间:2013-10-24 19:46:33

标签: tmux

我是tmux的新用户,并希望对其进行配置,以便在运行tmux时,我可以立即访问自定义的窗口/窗格。

例如,这是一个基本的〜/ .tmux.conf:

new -s main -n workspace
neww

当我运行tmux时,我会被抛入一个简单的旧会话中。当我执行list-sessions时,我可以看到conf文件中指定的工作区会话,但为了使用它,我必须切换到它。

当我打开tmux时,我怎样才能继续将“工作区”会话转换为我转入的会话,以便我不必每次都切换到它?

5 个答案:

答案 0 :(得分:3)

我不确定我是否理解了这个问题,但我使用tmuxinator来快速启动预先填充了窗口,窗格和进程的会话。

答案 1 :(得分:1)

您可以通过运行tmux attach而非tmux来附加到上次使用的会话(如果适用,将是您的conf文件创建的会话)。

如果您的配置中有多个会话设置,您可以使用会话名称目标标记选择您登陆的会话,如:tmux attach -t <session_name>

答案 2 :(得分:1)

我已创建this script。它不需要tmuxinator,ruby或其他。它只是一个bash脚本,可配置:

名为config的文件应包含以下内容:

combo=()
combo+=('logs' 'cd /var/log; clear; pwd')
combo+=('home' 'cd ~; clear; pwd')

并且bash代码应为:

#!/bin/bash

if [ -r config ]; then
    echo ""
    echo "Loading custom file"
    . config
else
    . config.dist
fi

tmux start-server

window=0
windownumber=-1

for i in "${combo[@]}"; do

    if [ $((window%2)) == 0 ]; then
        name=${i}
        ((windownumber++))
    else
        command=${i}
    fi

    if [ ${combo[0]} == "${i}" ]; then
        tmux new-session -d -s StarTmux -n "${name}"
    else
        if [ $((window%2)) == 0 ]; then
            tmux new-window -tStarTmux:$windownumber -n "${name}"
        fi
    fi

    if [ $((window%2)) == 1 ]; then
        tmux send-keys -tStarTmux:$windownumber "${command}" C-m
    fi

    ((window++))
done

tmux select-window -tStarTmux:0
tmux attach-session -d -tStarTmux

答案 3 :(得分:0)

您在.tmux.conf文件中创建会话,但您永远不会附加到该文件。当你刚刚运行

tmux

没有指定命令,因此默认运行new-session并附加到生成的会话。

.tmux.conf文件限制为各种设置并将会话创建和管理保留为单独的脚本会更加清晰。

#!/bin/bash

tmux new -s main -n workspace
tmux neww  # Creates a 2nd window, in addition to the new session's first window
tmux attach -t main

答案 4 :(得分:0)

使用我的脚本。 IniTmux。您可以使用简单的YAML文件轻松地描述会话,窗口和窗格。

---
name: AK-Math 
root: /i/project/LibAK/feature/Math
windows:
- Matrix  : feature
- Vector  : feature
- Number  : feature
- Complex : feature
- Real    : feature
- Integer : feature
- Bool    : feature

- Math:
    layout : tiled
    dir    : branch
    panes  :
    - 'ranger'
    - ''

models:
    feature:
        layout: "40fd,113x31,0,0[113x22,0,0{22x22,0,0,0,90x22,23,0,1},113x9,0,23,2]"
        dir: <WName>
        panes:
        - loop "tree obj" 0.5
        - vim -c VWSLoadWorkSpace
        - ''