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 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相关推荐
- 打造高效前端工作环境 - tmux
打造高效前端工作环境 - tmux 前言 现在前端开发可不容易啊,先打开个VIM,然后再打开个lite-server,一不小心写个ES2015还要打开个gulp来做预编译,如果能把这么多个窗口放在一 ...
- 打造高效前端工作环境-tmuxinator
前言 虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口.窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口.窗格和各种所需执行的程序的信息呢?tmuxinato ...
- 他妈ux,您懂的tmux
转自 http://louiszhai.github.io/2017/09/30/tmux/ 请尊重原作者 本文首发于CSDN网站,下面的版本又经过进一步的修订. 导读 我一直信奉简洁至上的原则,桌面 ...
- [转载] Tmux 速成教程:技巧和调整
原文: http://blog.jobbole.com/87584/ 决定从 screen 转向 tmux 了, 非常喜欢 tmux 的窗格功能. 简介 有些开发者经常要使用终端控制台工作,导致最终打 ...
- 如何使用Tmux提高终端环境下的效率
鼠标的发明是了不起的创新,它让电脑更加接近普通人.但从程序员和系统管理员的角度,使用电脑工作时,手一旦离开键盘,就会有些分心. 作为一名系统管理员,我大量的工作都需要在终端环境下.打开很多标签,然后在 ...
- 多窗口管理器Tmux - 从入门到精通
我们先来理解下 tmux 的几个元素.tmux 的主要元素分为三层 Session 一组窗口的集合,通常用来概括同一个任务.session 可以有自己的名字便于任务之间的切换. Window 单个可见 ...
- linux tmux 详细教程,Linux下的神器介绍之Tmux分屏器
前言 我们为什么需要分屏器呢? 对于这个问题,我想大家肯定都有自己的看法. 主流的观点是这样的,对于生活在Linux下的人(开发人员.运维人员.普通爱好者)都不可避免的使用终端模拟器(比如,gnome ...
- tmux | 使用手册 (cheat sheet)
Cheatsheet: tmux, 参考 https://www.outcoldman.com/cheatsheets/tmux/ https://gist.github.com/noku/ceb09 ...
- 攻防世界 Pwn 进阶 第二页
00 这文章更重要的是对这些题进行一个总结,说一些值得注意的地方,写一些自己的理解. 为了形成一个体系,想将前面学过的一些东西都拉来放在一起总结总结,方便学习,方便记忆. 攻防世界 Pwn 新手 攻防 ...
最新文章
- html的后绑定事件,HTML 控件绑定事件
- 云炬金融每日一题20211010
- 测试设计中需要考虑的22种测试类型
- Linux基础 —— Linux终端命令格式
- postgresql数据库备份与还原
- BAP存储属性的思想
- 小小算法题(CCF)
- radiobuttonlist 后面追加操作按钮_【进口知识】通关无纸化签约及代理报关委托收发操作指南...
- 技术篇-HBase Coprocessor 的实现与应用
- EasyRecovery的工具栏介绍
- 一个老板向员工发的牢骚
- 印刷电路板(PCB)基础
- 小米电视联网后显示无法解析小米电视服务器,小米电视机功能详解 教你轻松使用...
- 这有清理C盘空间的妙招,学会了就不怕内存满了
- wlan消失 网络适配器文件夹空了 设备管理器黄色感叹号 wifi那里看不到任何WiFi解决
- 【拼图游戏】自选图片拼图--基于pygame实现
- 商城小程序的一些功能介绍以及搭建教程
- ESP32 开发笔记(四)LVGL控件学习 Canvas 画布控件
- 韩国利用三星区块链技术打击海关诈骗
- Oracle给查询结果从1到n添加序号