在针对各种不同的专案进行开发时,会需要在不同位置开启终端,并执行不同的指令, Tmux 并不会纪录每个专案要怎麽开启各个专案,因此每次开始开发时,都需要重新开启所有的终端,并一一下指令,才能开始开发。
这里介绍一个可以帮使用者纪录不同情境下所要开启终端的工具, Tmuxinator 。
Tmuxinator 可以使用 Yaml 配置档设定 Tmux session 的内容,使用 Tmuxinator 开启 Tmux 时,会藉由配置档的设定,预设建立期望的配置视窗,藉以节省初次开启 Tmux 时的时间与精神。
在安装 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.yml
,依照存放位置的不同,分为全局专案与本地专案。
全局存放在下列的路径:
$TMUXINATOR_CONFIG
$XDG_CONFIG_HOME/tmuxinator
~/.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
:专案的根目录位置,会影响 windows
与 panes
属性中指令的路径。windows
:专案要开启的 Tmux window 。windows.[window name]
:可以是字串或物件。
windows.[window name].panes
: window 中的 pane 欲执行的指令。windows.[window name].layout
: panes 的显示方式,有 even-horizontal
、 even-vertical
、 main-horizontal
、 main-vertical
与 tiled
五种,详情可以参考 Tmux 的说明。设定完配置档後,使用指令开启专案:
# 全局专案
tmuxinator start [project]
# 本地专案
tmuxinator local
# 建立 [EXISTING] 副本并命名为 [NEW]
tmuxinator copy [EXISTING] [NEW]
# 删除专案
tmuxinator delete [PROJECT1] [PROJECT2]
tmuxinator.yml
设定不同的专案。
<<: 2021-Day16. Serverless(四):当 IntelliJ IDEA 遇到 Docker ---Docker Plugin设定实作教学---
不免俗地来个结赛感言 很荣幸参加了这一届的IT铁人竞赛 以前并不知道这个比赛,後来才发现,以往在学习...
#odoo #开源系统 #数位赋能 #E化自主 前言 在前一篇文章中我们讨论到,当我们利用整合性工具...
我今天要来教大家Python的while回圈,前天有教过for回圈,都是能让程序重复跑的语法,但是功...
VM环境安装及打包上环境 安装环境及套件 输入sudo apt update 更新apt 输入sud...
官网的说明是: Rack, a modular Ruby webserver interface R...