程序员内功系列--Tmux篇
前言
自从上次埋下了《程序员内功系列–序篇》的坑过后,继续写了《程序员内功系列–iTerm与Zsh篇》,谁知突然之间懒癌又犯了,Tmux篇迟迟没动手写。今日猛然回想起来,半年又过去了,惭愧惭愧。这次还是打算一鼓作气,把剩下的坑都填了吧……
Tmux简介
言归正传,Tmux是一个老牌又经典的终端复用工具,相信命令行的程序员们以及运维同学们都对它赞不绝口。用上了Tmux,仿佛在终端世界为你打开了另外一个窗口…… 不! 其实是另外一堆窗口……好吧,这次,我们就来探究一下Tmux的神奇世界……
提到Tmux,也许不少同学会比较疑惑,跟我平时mac OS下用的iTerm2有啥区别呢?你Tmux有的多个窗口切换,我iTerm2照样有多个Tab来实现类似的功能。其实,不光是窗口,Tmux提供了基于session概念的多终端窗口管理功能。既然有了session,用户就可以随时存储和恢复终端会话。
想象一下某个场景:某个用户开了多个终端窗口SSH登录到远程的服务器上进行运维操作,下班关机回家之后,第二天必须得把所有的终端窗口再重新连接和设置一遍,才能继续昨天的工作。有了session就完全不一样了,下班的时候可以脱离当前session,第二天继续上班,用户随时可以通过命令行恢复上次的会话,这样真是太方便了。所以,使用Tmux的场景大致分为两种:
在服务端运行Tmux,方便保存我们的窗口和各种会话在本地终端(例如:iTerm2)运行,方便喜欢我们日常程序开发这样看来,使用Tmux的好处不言而喻。另外,Tmux还提供了许多强大的功能:
提供基于命令行的功能强大的界面。完整的快捷键系统,可以完全脱离鼠标,通过键盘快捷键组合,完成一切你所需要的操作。基于会话的窗口管理理念,多个会话,多个窗口和panel,进行快速而又高效的切换。窗口可以纵向和横向任意分割为多个panel,并实现各种自定义布局,迎合不同用户的需要。支持 UTF-8 编码及 256 色终端。支持插件,通过配置不同插件实现界面可定制化。其实Tmux的功能还有很多,等着你去逐步发现……
会话、窗口与窗格的概念
Tmux中的主要概念分为三个:
Session - Session是Tmux中最主要的概念了,默认开启Tmux的时候,就会自动新建一个会话,在这个会话中,也会给你开启一个默认的Window(也即窗口)。Tmux中可以拥有多个会话,多个会话之间可以来回无缝切换。
Window - 相比session,Windows是稍微小一点的单位。一个session中,可以开启多个window。这些window同属于一个Session,并由其管理。
Panel - Panel是比Window更小的界面元素。前面我们也提到了Tmux中可以对window进行任意分割,由window分割出来的单位就叫做panel了。在同一个window中,用户可以控制光标在分割出的panel中随意移动,用以选定当前作为激活状态的panel。
如果看了这些概念还不太明白,也许下面这个图可以清晰的表明它们之间的关系:
他们的从属关系为:Session -> Window -> Panel
安装与配置
Tmux的安装也非常方便,通常Ubuntu下安装,使用:
1
sudo apt-get install tmux
在mac OS中,推荐使用brew来安装:
1
brew install tmux
Tmux简单配置
Tmux在安装完成之后,可以立即启动,不过这还只算一个“裸奔”的Tmux,因为很多配置项都是默认值,需要我们根据自己的喜好进行一些设置。从零开始创建一个Tmux是比较费神的,建议去网上寻找其他大神的配置文件来修改,这样比较快捷一些。这里提供一个我经常使用的Tmux配置文件,可以作为模板,直接下载后按照自己的喜好来更改。
需要注意的是,tmux的配置文件本身是一个隐藏文件,也就是以 .
号开头的文件,叫做 .tmux.conf
。我们需要把这个文件放在当前用户的默认主目录下,也即 ~/.tmux.conf
,tmux启动后,会自动读取和加载里面的配置项。
配置文件就算这么搞定了,如果你是第一次接触Tmux,建议不用太纠结如何弄清楚配置文件里面的每一项是什么意思,在后续的使用中,你可能会不断去修改和调整,自然而然也就熟悉了。接下来,我们要见识一下Tmux强大的各种快捷键功能。
常用快捷键
初次使用Tmux需要明白的是,Tmux的各种快捷键功能,是需要一个<prefix>
组合键作为前缀的。也就是说,需要先按下 <prefix>
组合键,才能激活快捷键功能,然后再按对应各种功能的快捷键,才会生效。之所以这样设计,估计也是为了把快捷键的输入跟用户正常输入区分开来。
初次使用Tmux,我们要知道的是,Tmux为我们默认预备的 <prefix>
组合键,是 C-b
(即Ctrl+b)。当然,根据我们自己的习惯,如果觉得 C-b
按起来不方便,可以通过修改配置文件的方式,自定义自己喜欢的 <prefix>
组合键。比如我就觉得 C-b
距离有点远,于是,我的 <prefix>
是这么定义的:
1
set -g prefix C-g
嗯,我把我的 <prefix>
设置为了 Ctrl+g (参考我的配置文件),或许你也能找到自己按起来比较舒适的 <prefix>
组合键。使用Tmux的快捷键,几乎能完成大部分的功能和操作,让你双手几乎不用离开键盘,就可以完成日常的工作,感觉非常的Geek。
这里简单列举一下Tmux的部分快捷键操作,有些快捷键估计跟Tmux默认提供的不太一样,因为我根据自己的喜好进行了一些调整。
窗口(Window)操作
1
2
3
4
5
6
7
<prefix> c 创建新窗口
<prefix> w 列出所有窗口
<prefix> n 后一个窗口
<prefix> p 前一个窗口
<prefix> f 查找窗口
<prefix> , 重命名当前窗口
<prefix> & 关闭当前窗口
窗格(Panel)操作
1
2
3
4
5
6
7
8
9
10
11
<prefix> | 垂直分割
<prefix> - 水平分割
<prefix> o 交换窗格
<prefix> x 关闭窗格
<prefix> <space> 切换布局
<prefix> q 显示每个窗格是第几个,当数字出现的时候按数字几就选中第几个窗格
<prefix> { 与上一个窗格交换位置
<prefix> } 与下一个窗格交换位置
<prefix> u 切换窗格最大化
<prefix> n 切换窗格最小化
<prefix> 0-9 切换到指定编号的窗口
窗格(Panel)选择
1
2
3
4
<prefix> h 选择左边的窗格
<prefix> j 选择下面的窗格
<prefix> k 选择上面的窗格
<prefix> l 选择右边的窗格
参考这里的设置
窗格(Panel)尺寸调整
1
2
3
4
<prefix> H 当前窗格向左扩大3格
<prefix> J 当前窗格向下扩大3格
<prefix> K 当前窗格向上扩大3格
<prefix> L 当前窗格向右扩大3格
另外,打开了这个选项,还能使用鼠标来调整Panel尺寸。
会话(Session)相关
1
2
3
<prefix> :new<回车> 启动新会话
<prefix> s 列出所有会话
<prefix> $ 重命名当前会话
这里只是列出了部分Tmux常用快捷键,初学Tmux,千万别被这么多的快捷键给吓住,随着使用Tmux时间的不断增加,这些快捷键最终会变为肌肉的条件反射,所谓的“无剑胜有剑”,嘿嘿。
Tmux使用效果
嗯,待你玩熟了window与panel,Tmux里面你就可以任意创建自己喜欢的终端布局了。下面是我常用的终端布局效果,供大家围观……
开发程序时的布局运维与部署程序时的布局插件系统与常用插件介绍
TPM的安装
跟我们现在常用的很多软件类似,Tmux也支持插件系统,可以通过安装插件扩展出许多功能,让Tmux变得更加强大。在Tmux中,这款插件管理器叫做 TPM - Tmux Plugin Manager。
TPM的安装也比较简单:
1
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
然后,修改Tmux配置文件,让其在启动时加载TPM,参考这里
TPM主要提供插件的安装,更新和移除等管理功能:
<prefix> I
安装插件,并更新Tmux<prefix> U
更新所有已安装插件<prefix> Alt U
移除所有插件列表中不存在的插件常用插件推荐
有了TPM,我们就能够安装和使用各种插件了,这里介绍几款我比较常用的插件:
Tmux Resurrect一个非常好用的保存当前Tmux窗口和Panel布局的插件。它可以帮助你持久化当前Tmux中所有的窗口和Panel布局。如果你对窗口进行了分割并且精心调整过,在退出Tmux之前可以使用快捷键对布局进行持久化。下一次启动Tmux的时候,也能非常方便的用快捷键恢复上次的窗口布局,真是非常方便。
插件地址:https://github.com/tmux-plugins/tmux-resurrect
Tmux urlview在终端界面中自动搜寻所有的URL链接地址,合并为一个可以选择的列表,然后选中直接在浏览器中打开URL。省去了用鼠标复制URL,再打开浏览器粘贴的繁琐操作,非常高效,值得推荐!
插件地址:https://github.com/tmux-plugins/tmux-urlview
Tmux open使用系统中默认文件类型对应的程序,快速打开在终端中选中的文件名。这个也非常高效,值得推荐!插件地址:https://github.com/tmux-plugins/tmux-open
Tmux-Battery 和 Tmux-CPU这两个插件也值得推荐,安装好后,能在Tmux右下角显示当前机器的电量和CPU占用百分比,能给Tmux增色不少。
插件地址:https://github.com/tmux-plugins/tmux-batteryhttps://github.com/tmux-plugins/tmux-cpu
总结
Tmux真是终端下的利器,在macOS下,配合iTerm2和Vim,能轻松的打造出高效的开发环境。在服务端运行Tmux,也能为你日常运维工作带来许多便利。所以,将Tmux大法谨记心中,他日必能为君带来极大的便利和效率。
相关阅读
程序员内功系列–序篇
程序员内功系列–iTerm与Zsh篇
文章来源:
Author:Timothy
link:https://xiaozhou.net/learn-the-command-line-tmux-2018-04-27.html