前些天经朋友介绍认识了一个Linux利器,有了它,就能在Linux机器上为所欲为了,哦不,是更有效率的工作了。这个利器就是传说中的tmux,什么?没听说过,那且容我慢慢道来。

简介

话说当年盘古开天辟地之时(省略万字),有个荷兰小伙叫做李纳斯创造出了Linux,blabla…然后就有了tmux。

tmux是一个优秀的终端复用软件,即使非正常掉线,也能保证当前的任务运行,这一点对于 远程SSH访问特别有用,网络不好的情况下仍然能保证工作现场不丢失!此外,tmux完全使用键盘 控制窗口,实现窗口的切换功能。

简单地说,tmux对于编程人员来说主要有两个功能(这应该也是tmux的主要功能):

  • split窗口。可以在一个terminal下打开多个终端,也可以对当前屏幕进行各种split,即可以 同时打开多个显示范围更小的终端。
  • 在使用SSH的环境下,避免网络不稳定,导致工作现场的丢失。想象以下场景, 你在执行一条命令的过程中,由于网络不稳定,SSH连接断开了。这个时候,你就不知道之前 的那条命令是否执行成功。如果此时你打开了很多文件,进入了较深层次的目录,由于网络 不稳定,SSH连接断开。重新连接以后,你又不得不重新打开那些文件,进入那个深层次的 目录。如果使用了tmux,重新连接以后,就可以直接回到原来的工作环境,不但提高了工作 效率,还降低了风险,增加了安全性。

安装

那么好的东西想必你已经迫不及待要安装了吧。待我交给你咒语,你只要对着linux机器说出以下咒语,你就将拥有它:

ubuntu类:

sudoapt-get install tmux

RedHat类:

yum install tmux 

当咒语说完,进度条走完之时,你就成功安装了tmux,安装完成后输入命令tmux即可打开软件,界面十分简单,类似一个下方带有状态栏的终端控制台。此时,你不以为然的笑笑:tmux不过尔尔嘛。(tmux笑道:无知的人类啊)

配置

为了更好的使用tmux,强烈建议先配置后使用。打开 ~/.tmux.conf 文件,添加如下几行:

#设置前缀为Ctrl + a set -g prefix C-a #解除Ctrl+b 与前缀的对应关系 unbind C-b #将r设置为加载配置文件 bind r source-file ~/.tmux.conf #copy-mode 将快捷键设置为vi 模式 setw -g mode-keys vi

配置完以后,重启tmux起效,或者先按 Ctrl+b ,然后输入 : ,进入命令行模式, 在命令行模式下输入:

source-file ~/.tmux.conf 同样会起效。

使用

这里需要说明一点的是,tmux的任何指令,都包含一个前缀,也就是说,你按了前缀(组合键:默认是 Ctrl+b ,不过已经被我们给改成了 Ctrl+a ),以后,系统才知道你接下来的指令是发送给tmux的。正确按法:按完组合键松手,然后按其他按键。我常用户的是Ctrl-a “ 模向分隔窗口以及Ctrl-a % 纵向分隔窗口~

下面列出常用的按键:

Ctrl-a ? 显示快捷键帮助
Ctrl-a C-o 调换窗口位置,类似与vim 里的C-w
Ctrl-a 空格键 采用下一个内置布局
Ctrl-a ! 把当前窗口变为新窗口
Ctrl-a " 模向分隔窗口
Ctrl-a % 纵向分隔窗口
Ctrl-a q 显示分隔窗口的编号
Ctrl-a o 跳到下一个分隔窗口
Ctrl-a 上下键 上一个及下一个分隔窗口
Ctrl-a C-方向键 调整分隔窗口大小
Ctrl-a c 创建新窗口
Ctrl-a 0~9 选择几号窗口
Ctrl-a c 创建新窗口
Ctrl-a n 选择下一个窗口
Ctrl-a l 切换到最后使用的窗口
Ctrl-a p 选择前一个窗口
Ctrl-a w 以菜单方式显示及选择窗口
Ctrl-a t 显示时钟
Ctrl-a ; 切换到最后一个使用的面板
Ctrl-a x 关闭面板
Ctrl-a & 关闭窗口
Ctrl-a s 以菜单方式显示和选择会话
Ctrl-a d 退出tumx,并保存当前会话,这时,tmux仍在后台运行,可以通过tmux attach进入 到指定的会话