05 - Tmuxinator - Tmux sessions 管理工具

在针对各种不同的专案进行开发时,会需要在不同位置开启终端,并执行不同的指令, Tmux 并不会纪录每个专案要怎麽开启各个专案,因此每次开始开发时,都需要重新开启所有的终端,并一一下指令,才能开始开发。

这里介绍一个可以帮使用者纪录不同情境下所要开启终端的工具, Tmuxinator 。

Tmux 的 sessions 管理工具 Tmuxinator

Tmuxinator 可以使用 Yaml 配置档设定 Tmux session 的内容,使用 Tmuxinator 开启 Tmux 时,会藉由配置档的设定,预设建立期望的配置视窗,藉以节省初次开启 Tmux 时的时间与精神。

安装 Tmuxinator

在安装 Tmuxinator 前,请先确认 Tmux 已经安装。

使用 Homebrew 安装 Tmuxinator :

brew install tmuxinator

安装完成後,使用 tmuxinator version 检查是否安装成功。

% tmuxinator version
tmuxinator 3.0.1

另外, Tmuxinator 需要 EDITOR 环境变数来决定要如何开启档案,使用 echo 确认 EDITOR 变数是否有被设置:

echo $EDITOR

如果没有设置的话,需要在 Shell 的配置档中设定,以 ~/.zshrc 为例:

export EDITOR='vim'

上例将 EDITOR 设为 vim ,表示 Tmuxinator 会使用 vim 作为编辑器。

Tmuxinator 的专案

Tmuxinator 的专案设置档为 tmuxinator.yml ,依照存放位置的不同,分为全局专案与本地专案。

全局存放在下列的路径:

  1. $TMUXINATOR_CONFIG
  2. $XDG_CONFIG_HOME/tmuxinator
  3. ~/.tmuxinator

Tmuxinator 依照输入的专案名称,将上述顺序的路径查找一次,只要有符合的即为目标。

本地专案会放於 ./tmuxinator.yml 。本地专案的好处在於它可以跟着专案决定不同的配置,并且可以与专案一起被版本控制。

建立新的专案

使用 new 建立或编辑专案:

tmuxinator new [project]

上面的命令会建立全域专案,使用 --local 建立本地专案:

tmuxniator new --local [project]

在下完指令後,如果 EDITOR 环境变数有设置的话, Tmuxinator 会帮我们将配置档使用编辑器打开。

配置属性

使用 tmuxinator new 建立专案後,会建立预设的配置档,可以藉由预设配置档中的说明来理解各种属性的效果。

下面是个配置档的内容:

# /Users/PeterChen/.config/tmuxinator/gmi.yml

name: gmi
root: ~/Documents/gain-miles/

windows:
  - frontend:
      layout: main-horizontal
      panes:
        - cd ./gm-eb-proposal/frontend/vue-lbd-pro-html-v1.1.0
        - cd ./gm-eb-proposal/frontend/vue-lbd-pro-html-v1.1.0 && yarn storybook:serve
  - backend: cd ./gm-eb-proposal/ && gradle -p eb-proposal-server -D profile=dev clean build -x test
  - odoo-bridge: cd ./GM_ODOO_Interface/deployment/local && docker-compose ps

这个配置档包含了主要的几个属性,接着以这个配置来说明属性的配置方式。

  • name :专案名称,用在指令中指定专案的手段。
  • root :专案的根目录位置,会影响 windowspanes 属性中指令的路径。
  • windows :专案要开启的 Tmux window 。
  • windows.[window name] :可以是字串或物件。
    • 字串:此 window 欲执行的指令。
    • 物件:此 window 的细部配置。
  • windows.[window name].panes : window 中的 pane 欲执行的指令。
  • windows.[window name].layout : panes 的显示方式,有 even-horizontaleven-verticalmain-horizontalmain-verticaltiled 五种,详情可以参考 Tmux 的说明

开启 Tmuxinator 专案

设定完配置档後,使用指令开启专案:

# 全局专案
tmuxinator start [project]

# 本地专案
tmuxinator local

其他指令

# 建立 [EXISTING] 副本并命名为 [NEW]
tmuxinator copy [EXISTING] [NEW]

# 删除专案
tmuxinator delete [PROJECT1] [PROJECT2]

本文重点整理

  • 在关闭 Tmux 後, Tmux 不会储存 Session 的状态。
  • 为了避免每次都需要重新开启各个 Session 、 Window 与 Pane ,可以使用 Tmuxinator 。
  • Tmuxinator 使用配置档 tmuxinator.yml 设定不同的专案。
  • 藉由读取这些配置档,使用者可以依照需求开启一组设定好的 Tmux session 。

参考资料


<<:  2021-Day16. Serverless(四):当 IntelliJ IDEA 遇到 Docker ---Docker Plugin设定实作教学---

>>:  全端入门Day21_前端程序撰写之Vue.js

Day30-我也想要写感言_终於解脱啦

不免俗地来个结赛感言 很荣幸参加了这一届的IT铁人竞赛 以前并不知道这个比赛,後来才发现,以往在学习...

【Day29 #2】企业数位治理议题3:核心化之E化系统架构

#odoo #开源系统 #数位赋能 #E化自主 前言 在前一篇文章中我们讨论到,当我们利用整合性工具...

Python while回圈

我今天要来教大家Python的while回圈,前天有教过for回圈,都是能让程序重复跑的语法,但是功...

DAY28:VM安装套件以及GCP注意事项

VM环境安装及打包上环境 安装环境及套件 输入sudo apt update 更新apt 输入sud...

Day-04 说明什麽是Rack?

官网的说明是: Rack, a modular Ruby webserver interface R...