尝试Tmux


如果不是无鼠标操作控就可以忽略这篇文章了.很高兴你也是个无鼠标操作控, 今天就来看看tmux的神奇魔力.

在介绍tmux之前,还是先来说说场景–当我们需要开起多个ssh来观察不同服务器的状态的时候,很多个terminal将不得不被打开,如果你是window,那么你要很辛苦的拖动个个框保持满屏,或者也可以使用第三方的tab功能,而如果你是linux,我恐怕你也不得不这么做.当然如果你是利用类似xmonad等的titling的窗口管理器,这也是可以得到解决的.
目前,本人也是利用xmonad和urxvt来达到这个效果, 使用久了也会觉得这样是如此烦,每次想要在terminal里面干点别的事情就不得不打开新的terminal.

首先, 我们需要确定的事情是tmux不是terminal!!!它只是terminal的管理器,更准确的说是terminal复用器.
有什么直接的好处呢?Tmux可以帮助我们解决在只打开一个terminal的时候,既可以管理多个ssh,还可以管理多个vi或者top.或许你会问,这个功能通过后台进程不是可以搞定么?回答是是的,但是tmux do better.

在使用tmux之前,我们需要理解tmux中的四个概念client,session,window,pane.

client指的是我们的terminal,也就是能直接和session打交道的部分.

session则是进程的集合,也就是我们所说的多个ssh或者vi.

window是session的具体展现,可以理解为我们能看到的session.

pane是把window切割成多个部分,也就是说我们可以在一个window中看到多个ssh.

使用了tmux大概有3天, 总体感觉得心应手, 特别是session的概念, 让多个程序管理起来有序,清晰, 非常使用.
下面罗列下常用的组合(所有组合都是默认的均未特别设置过):

  1. ctrl+b + [, 进入scroll模式, 默认用emacs的按键来移动, 也可配置成vi的模式
  2. ctrl+b + [ 进入scroll模式后科使用space进入复制选择模式, 然后用enter复制选中的文本
  3. ctrl+b + :, 进入tmux的命令行, 比如可以重开session, killsession等
  4. ctrl+b + %, 新建pane并按垂直分割, ctrl+b + %, 水平新建pane
  5. ctrl+b + s, 查看所有session
  6. ctrl+b + ?, 查看按键绑定