今天介绍一款终端分屏神器:tmux,其效果如下图,可以让你在一个屏幕上管理多个终端。
本文将以tmux的man手册为主,介绍tmux的一些简单用法,满足基本的使用需求,要想了解更多的使用方法,请详读man手册,要知道,命令那么多,记是肯定记不住的,了解man手册才是万能的。
一、安装和启动
以Ubuntu为例,安装命令如下:
apt-get install tmux
运行tmux,只需要在命令行输入:tmux,即可新建一个tmux的会话窗口。
二、session、window、pane
在终端运行man tmux即可打开man手册,注意,本文展示的man手册是在Ubuntu环境运行下,CentOS环境下可能有些不同,当然,也可以从GitHub上找到tmux,查看官方的在线手册,内容基本上是一样的。
打开man手册,首先看一下DESCRIPTION的内容,如下:
这里介绍了tmux的几个概念:session、window、pane,其中window可以被分割为多个panes,对于简单应用来说,我们主要关注pane和window。
三、prefix key 和 command key
接下来往下翻,看KEY BINDINGS的内容,这节的内容是我们以后要经常打交道的,如下图,标出了一些我们现在要关注的内容:
这里有个非常重要的概念:prefix key,默认是Ctrl+b,其作用就是激活tmux的控制台,输入Ctrl+b之后紧接着输入列表中的command key,就可以对tmux进行相应的控制了。可以说,如果想在tmux中做任何操作,基本上都要先按下Ctrl+b,当然prefix key可以通过配置根据个人喜好进行修改。
上图标注出了几个简单但常用的command key,如 " 的作用就是将当前pane分割成一上一下两个,具体做法是:先按Ctrl+b,再按 " (这里要按住shift才能输出 " ,否则输出的其实是 ' ,另外要注意输入法必须是英文)。
如果顺利的话,想必现在你已经有了一上一下两个pane了,那么如何关闭一个pane呢,往下看,可以看到如下描述 x Kill the current pane 。所以先按Ctrl+b,再按x就可以关闭当前pane了,这里要区分一下 & Kill the current window,是关闭当前window。
接下来看 : ,这是一个非常重要的command key,它可以让你在tmux中输入各种命令,来控制tmux。接下来看看有哪些command以及在哪里找这些command。
四、各种command
在man手册接下来的章节中,当你看到如下图中的类似The following commands are available to manage clients and sessions的描述时,则之后高亮显示的command都是可以在tmux中输入的命令,如attach-session、list-session等,另外command基本都是有别名的,其实就是简写,如attach-session后面有个(alias:attach),就是它的简写。
其实第三节中的各种command key就是对command进行了快捷键的绑定,这些command key都可以用这种直接输入command的方式来实现。
五、一个例子copy-mode
类似vim一样,tmux的窗口也有两种模式,一种默认模式,就是刚进入tmux看到的;另一种是拷贝模式(copy-mode),它允许对窗口内容进行拷贝,以便在其他窗口中使用,而且该模式下也支持向上翻页以查看历史输出内容。man手册的介绍如下图:
如上图所示,可以用copy-mode这个命令进入拷贝模式,或者用 [ 这个command key来快捷实现。另外可以看到send-keys这个命令可以对拷贝模式进行各种控制,如上图最下面一行所示:send-keys -X begin-selection表示开始进行选择,其中-X参数用来给send-keys传递Command参数,可传递的参数如上图所列:append-selection、append-selection-and-cancel、back-to-indentation等等。
为了使用简便,tmux为这些拷贝模式下的命令绑定了一些快捷键,有两种风格可供选择,一种是emacs风格(默认),一种是vi风格,具体的快捷键也对应列出来了,比如begin-selection这个命令可以用空格键(vi)或者Ctrl+空格键(emacs)来快捷实现。具体使用哪种风格取决于mode-keys这个option,接下来就看如何设置option。
六、OPTIONS
man手册中有一章就叫OPTIONS,介绍了各种可以设置的参数,主要使用set-option以及set-window-option这两个个命令来设置参数,比如将复制模式的快捷键风格设置为vi风格的命令如下:set-window-option -g mode-keys vi 。关于tmux的各种详细参数配置可以详读man手册的OPTIONS这章。可以将一些常用的设置配置在~/.tmux.conf文件中作为默认启动设置,方便使用。
七、一点总结
对于tmux的一般入门级应用,我们只需要关注它的分屏功能就好了,这里列出一些常用的功能所在man手册中的位置,了解了这些章节,对于我们简单使用tmux就完全够了。
1、man手册KEY BINDINGS一章 ,列出了常用的command key (使用前要先按下prefix key,默认Ctrl+b),如
: 进入指令输入模式,输入指令 ;
" 上下分割屏幕 ;
% 左右分割屏幕 ;
c 创建一个新的window ;
0 to 9 选择对应的window ;
x 关闭当前pane;
& 关闭当前window;
2、man手册WINDOWS AND PANES一章,列出一些常用的对window和panes进行控制的command(要先使用prefix key激活控制台再使用:进入指令输入模式才能输入这些指令),如:
copy-mode 进入拷贝模式;
resize-pane 调整pane的大小;
3、man手册OPTIONS一章,列出了一些可配置的参数信息,配合set-option和set-window-option命令使用,如:
prefix 设置prefix key;
mode-keys 设置拷贝模式的快捷键风格;
最后还是那句话,不用记指令,不知道的查看man手册就好了。