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 wordword="${COMP_WORDS[COMP_CWORD]}"if [ "$COMP_CWORD" -eq 1 ]; thenlocal commands="$(compgen -W "$(tmuxinator commands)" -- "$word")"local projects="$(compgen -W "$(tmuxinator completions start)" -- "$word")"COMPREPLY=( $commands $projects )elif [ "$COMP_CWORD" -eq 2 ]; thenlocal wordswords=("${COMP_WORDS[@]}")unset words[0]unset words[$COMP_CWORD]local completionscompletions=$(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 projectscommands=(${(f)"$(tmuxinator commands zsh)"})projects=(${(f)"$(tmuxinator completions start)"})if (( CURRENT == 2 )); then_describe -t commands "tmuxinator subcommands" commands_describe -t projects "tmuxinator projects" projectselif (( CURRENT == 3)); thencase $words[2] incopy|debug|delete|open|start)_arguments '*:projects:($projects)';;esacfireturn
}

$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的Windowlayout: 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-verticalpanes:- list: # 多命令方式- cd ~/temp- ls -la- # empty

参考文章

  • tmuxinator项目主页
  • Tmuxinator:轻松管理复杂的 Tmux session
  • 打造高效前端工作环境-tmuxinator
  • Linux进阶02:tmux好基友Tmuxinator

tmux进阶之tmuxinator相关推荐

  1. 打造高效前端工作环境 - tmux

    打造高效前端工作环境 - tmux 前言  现在前端开发可不容易啊,先打开个VIM,然后再打开个lite-server,一不小心写个ES2015还要打开个gulp来做预编译,如果能把这么多个窗口放在一 ...

  2. 打造高效前端工作环境-tmuxinator

    前言  虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口.窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口.窗格和各种所需执行的程序的信息呢?tmuxinato ...

  3. 他妈ux,您懂的tmux

    转自 http://louiszhai.github.io/2017/09/30/tmux/ 请尊重原作者 本文首发于CSDN网站,下面的版本又经过进一步的修订. 导读 我一直信奉简洁至上的原则,桌面 ...

  4. [转载] Tmux 速成教程:技巧和调整

    原文: http://blog.jobbole.com/87584/ 决定从 screen 转向 tmux 了, 非常喜欢 tmux 的窗格功能. 简介 有些开发者经常要使用终端控制台工作,导致最终打 ...

  5. 如何使用Tmux提高终端环境下的效率

    鼠标的发明是了不起的创新,它让电脑更加接近普通人.但从程序员和系统管理员的角度,使用电脑工作时,手一旦离开键盘,就会有些分心. 作为一名系统管理员,我大量的工作都需要在终端环境下.打开很多标签,然后在 ...

  6. 多窗口管理器Tmux - 从入门到精通

    我们先来理解下 tmux 的几个元素.tmux 的主要元素分为三层 Session 一组窗口的集合,通常用来概括同一个任务.session 可以有自己的名字便于任务之间的切换. Window 单个可见 ...

  7. linux tmux 详细教程,Linux下的神器介绍之Tmux分屏器

    前言 我们为什么需要分屏器呢? 对于这个问题,我想大家肯定都有自己的看法. 主流的观点是这样的,对于生活在Linux下的人(开发人员.运维人员.普通爱好者)都不可避免的使用终端模拟器(比如,gnome ...

  8. tmux | 使用手册 (cheat sheet)

    Cheatsheet: tmux, 参考 https://www.outcoldman.com/cheatsheets/tmux/ https://gist.github.com/noku/ceb09 ...

  9. 攻防世界 Pwn 进阶 第二页

    00 这文章更重要的是对这些题进行一个总结,说一些值得注意的地方,写一些自己的理解. 为了形成一个体系,想将前面学过的一些东西都拉来放在一起总结总结,方便学习,方便记忆. 攻防世界 Pwn 新手 攻防 ...

最新文章

  1. html的后绑定事件,HTML 控件绑定事件
  2. 云炬金融每日一题20211010
  3. 测试设计中需要考虑的22种测试类型
  4. Linux基础 —— Linux终端命令格式
  5. postgresql数据库备份与还原
  6. BAP存储属性的思想
  7. 小小算法题(CCF)
  8. radiobuttonlist 后面追加操作按钮_【进口知识】通关无纸化签约及代理报关委托收发操作指南...
  9. 技术篇-HBase Coprocessor 的实现与应用
  10. EasyRecovery的工具栏介绍
  11. 一个老板向员工发的牢骚
  12. 印刷电路板(PCB)基础
  13. 小米电视联网后显示无法解析小米电视服务器,小米电视机功能详解 教你轻松使用...
  14. 这有清理C盘空间的妙招,学会了就不怕内存满了
  15. wlan消失 网络适配器文件夹空了 设备管理器黄色感叹号 wifi那里看不到任何WiFi解决
  16. 【拼图游戏】自选图片拼图--基于pygame实现
  17. 商城小程序的一些功能介绍以及搭建教程
  18. ESP32 开发笔记(四)LVGL控件学习 Canvas 画布控件
  19. 韩国利用三星区块链技术打击海关诈骗
  20. Oracle给查询结果从1到n添加序号

热门文章

  1. android原生浏览器6,Android手机实用选择 欧朋浏览器6.7版评测
  2. iphone手机型号对应iOS系统版本及设备标签
  3. ie自动保存html,IE无法打开 本地保存的HTML文件,解决方法
  4. 微信小程序获取手机号流程及后端java解密
  5. JAVA从入门到入土(引入篇)
  6. 便签。9.24.2020
  7. 计算机网络之静态路由
  8. 汇编语言源程序基本格式
  9. java 指定打印机 进行打印
  10. 退换货预约取件下单接口-快递员上门取件API