tmux进阶之tmuxinator

tmux进阶之tmuxinator

前言

tmuxinator是tmux的配置管理工具,解决了tmux服务器关机后session丢失问题。tmuxinator可以根据配置文件快速创建tmux的session。

Tmuxinator的安装

Tmuxinator基于Ruby,首先安装Ruby

Ubuntu用户可以用apt-get命令安装:

> apt-get install ruby

ArchLinux用户可以用pacman命令安装:

> pacman -S ruby

安装Tmuxinator

若由于(你懂得的)网络原因无法安装,则更新Ruby的gem源后再次尝试。

> gem source -a https://ruby.taobao.org/
> gem source -r https://rubygems.org/

安装tmuxinator

> gem install tmuxinator

基础设置

bash版

将下述文本保存为$HOME/.tmuxinator/.tmuxinator.bash,提供bash的tab键提示功能

#!/usr/bin/env bash

_tmuxinator() {
    COMPREPLY=()
    local word
    word="${COMP_WORDS[COMP_CWORD]}"

    if [ "$COMP_CWORD" -eq 1 ]; then
        local commands="$(compgen -W "$(tmuxinator commands)" -- "$word")"
        local projects="$(compgen -W "$(tmuxinator completions start)" -- "$word")"

        COMPREPLY=( $commands $projects )
    elif [ "$COMP_CWORD" -eq 2 ]; then
        local words
        words=("${COMP_WORDS[@]}")
        unset words[0]
        unset words[$COMP_CWORD]
        local completions
        completions=$(tmuxinator completions "${words[@]}")
        COMPREPLY=( $(compgen -W "$completions" -- "$word") )
    fi
}

complete -F _tmuxinator tmuxinator mux

$HOME/.bashrc下增加下述内容:

source $HOME/.tmuxinator/.tmuxinator.bash
export EDITOR='vim'

source $HOME/.bashrc使其生效。

zsh版

将下述文本保存为$HOME/.tmuxinator/.tmuxinator.zsh,提供zsh的tab键提示功能

_tmuxinator() {
  local commands projects
  commands=(${(f)"$(tmuxinator commands zsh)"})
  projects=(${(f)"$(tmuxinator completions start)"})

  if (( CURRENT == 2 )); then
    _describe -t commands "tmuxinator subcommands" commands
    _describe -t projects "tmuxinator projects" projects
  elif (( CURRENT == 3)); then
    case $words[2] in
      copy|debug|delete|open|start)
        _arguments '*:projects:($projects)'
      ;;
    esac
  fi

  return
}

$HOME/.zshrc下增加下述内容:

source $HOME/.tmuxinator/.tmuxinator.zsh
export EDITOR='vim'

source $HOME/.zshrc使其生效。

常用命令

Tmuxinator的一个工程(Project)对应tmux的一个session。

tmuxinator命令已alias为mux。

new简写为n,open简写为o,edit简写为e,list简写为l,copy简写为c,delete简写为d。

> mux n ws      # 创建工程ws
> mux o ws      # 打开工程ws的配置文件
> mux e ws      # 同上
> mux c ws ws1  # 复制ws工程到ws1
> mux d ws      # 删除ws工程
> mux l         # 显示所有工程
> mux ws        # 开启ws工程

配置

当new一个工程后,会出现如下信息(省略注释)。

name: ws # session名称
root: ~/ # 工程根目录,活动Pane会首先cd到此目录

windows:
  - editor: # 第1个名为Editor的Window
      layout: main-vertical # Pane的布局
      panes: # 各个Pane
        - vim # 第一个Pane运行vim命令
        - guard # 第二个Pane运行guard命令
  - server: bundle exec rails s # 第2个名为server的Window,运行命令为bundle
  - logs: tail -f log/development.log # 第3个名为logs的Window,运行命令为tail

可以根据注释配置自己的工程。

自定义layout

工程配置中的layout项,有5个默认的值。

  • even-horizontal
  • even-vertical
  • main-horizontal
  • main-vertical
  • tiled

开启tmux后,可以使用快捷键prefix space切换layout,建议开启4个Pane进行测试。

下面简单演示下这5个默认布局的样式,面板配置如下:

panes:
- top
- top
- vim .
- vim .

even-horizontal

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C4eIpwUd-1636537672627)(http://7xsd89.com1.z0.glb.clouddn.com/even-horizontal.png)]

even-vertical

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SdstmP1e-1636537672630)(http://7xsd89.com1.z0.glb.clouddn.com/even-vertical.png)]

main-horizontal

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O3mgQsiJ-1636537672633)(http://7xsd89.com1.z0.glb.clouddn.com/main-horizontal.png)]

main-vertical

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hQymVWMc-1636537672635)(http://7xsd89.com1.z0.glb.clouddn.com/main-vertical.png)]

tiled

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EMydtJTj-1636537672636)(http://7xsd89.com1.z0.glb.clouddn.com/tiled.png)]

其中main-horizontal和main-vertical可以设置默认主Pane的宽度和高度。

在$HOME/.tmux.conf文件中添加下面这些内容:

set-window-option -g main-pane-width 100 # 设置主Pane宽度
set-window-option -g main-pane-height 80 # 设置主Pane高度

如果不满足layout默认值,layout项可以自定义值。
首先调整好窗口的Pane,prefix d关闭Session。

> tmux list-windows
1: bash* (4 panes) [211x47] [layout 9a0a,211x47,0,0{110x47,0,0,12,100x47,111,0[100x23,111,0,13,100x23,111,24{49x23,111,24,14,50x23,161,24,15}]}] @3 (active)

将上述layout之后的信息(到最后一个]前),复制到工程配置中的layout项即可。注意pane的个数必须与执行命令的个数对应。

windows:
  - editor:
      layout: 9a0a,211x47,0,0{110x47,0,0,12,100x47,111,0[100x23,111,0,13,100x23,111,24{49x23,111,24,14,50x23,161,24,15}]}
        - # empty
        - # empty
        - # empty
        - # empty

多命令

当某个Pane需要执行多命令时,官方不推荐使用&&或;的形式。可以采用如下方式发送命令。

windows:
  - editor:
      layout: main-vertical
      panes:
        - list: # 多命令方式
          - cd ~/temp
          - ls -la
        - # empty

参考文章

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
conda是一个开源的软件包管理系统和环境管理系统,用于安装和管理不同版本的软件包和依赖项。tmux是一个终端复用器,可以在远程服务器上运行程序并保持会话的持久性,即使网络中断也能保持程序正常运行。 要在远程服务器上安装tmux,可以按照以下步骤进行操作: 1. 对于Linux系统,输入命令:sudo apt-get install tmux 对于Mac系统,输入命令:brew install tmux 如果你使用的是anaconda虚拟环境,你还可以使用conda install tmux命令来安装tmux。 2. 新建和退出tmux会话: 输入命令:tmux,进入新建的tmux会话窗口。 要退出tmux会话窗口,输入命令:exit。 要建立特定名称的tmux会话窗口,输入命令:tmux new -s 新建会话名称。 3. 查看、重命名、接入以及转换: 在未进入tmux窗口的情况下,输入命令:tmux ls,可以查看全部的tmux会话。 要重命名tmux会话,输入命令:tmux rename-session -t 原会话名称 新会话名称。 要进入已有的tmux会话,输入命令:tmux attach -t 会话名称。 进入了tmux会话窗口之后,输入命令:tmux switch -t 会话名称,可以转到对应的tmux会话。 4. 分离和终止: 进入了tmux会话窗口之后,输入命令:tmux detach,会退出当前会话,但会话会在后台继续存在,并且会话中运行的程序也会转到后台。 在未进入tmux窗口的情况下,输入命令:tmux kill-session -t 会话名称,可以强制终止会话,杀死tmux会话进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值