【问题标题】:Creating tmux layout with ZSH scripts使用 ZSH 脚本创建 tmux 布局
【发布时间】:2015-06-11 20:12:17
【问题描述】:

我正在尝试编写一个不错的 tmux 配置脚本,但我在如何定位窗格以进行拆分和选择方面遇到了一些问题。我想创建以下布局,其中默认选择 Vim 窗格。我还想创建第二个窗口,如脚本中所示,但这不是问题。

---------------------
|        VIM        |
|-------------------|
|         |         |
|  ZSH    | ghci    |
|-------------------|


session=$1
tmux has-session -t $session
if [ $? != 0 ]
then
     tmux new-session -s $session -n editor -d
     tmux send-keys -t $session 'vim' C-m
     tmux split-window -v -p 20 -t $session
     tmux split-window -h -t $session:2
     tmux new-window -n console -t $session
     tmux select-window -t $session.1
     #tmux select-pane -t $session:1.1
     tmux attach -t $session
else
     echo 'SESSION ALREADY EXISTS'
fi

所以我的问题是:

如何将特定窗格定位为水平拆分,以便创建 ZSH/ghci 拆分?如何针对特定窗格执行 ghci 等命令?

【问题讨论】:

    标签: bash zsh tmux


    【解决方案1】:

    split-window-t 选项可以采用<sessionname>:<windownumber>.<panenumber> 形式的参数,您可以使用它来准确指定应该拆分哪个窗格。 new-session 可以接受一个参数来指定在初始窗口中运行哪个命令,这样就不需要send-keyssplit-window 使用类似的参数来指定如果不是默认 shell,则在新窗格中运行什么命令。

    session=$1
    tmux has-session -t $session
    if [ $? != 0 ]
    then
         tmux new-session -s $session -n editor -d vim
         tmux split-window -t "$session:0.0" -v -p 20 
         tmux split-window -t "$session:0.1" -h ghci
         tmux attach -t $session
    else
         echo 'SESSION ALREADY EXISTS'
    fi
    

    当然,窗格在其命令结束时关闭,因此您希望能够在不破坏窗格的情况下关闭vim/ghci,坚持使用send-keys(其-t参数可以采用相同的窗格与new-sessionsplit-window 一起使用的标识符),或查看remain-on-exit 选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-12
      • 2022-07-24
      • 1970-01-01
      • 2014-07-28
      • 2011-10-05
      • 2018-05-30
      • 2020-01-21
      • 2021-10-23
      相关资源
      最近更新 更多