使用tmux

神级命令行软件 Tmux

  • 这是我在大学里认识到的最好用的神器,没有之一,提高效率那是没得说,主要至今未曾崩溃过,可见其可怕之处
  • 额外提一点就是,由于学校原因,没机会使用到 tmux 的远程连接黑魔法,所以本篇文章记录的是单机情况下的操作,远程连接没有用过,就不好置评
  • 但即便是单机情况下,tmux 也绝对是让人惊艳的一款终端软件

说白了它就是一个分屏工具

  • 我不会记录它的每个部件的具体名字,而是用什么地方的作用来描述它,还是那句老话,在其位谋其职。

迅速开始

  • 安装,直接从仓库里安装,但是一般而言,Linux会自带

    $ sudo apt-get install tmux
    
  • 完成之后,不用管其他的,直接在 Shell 里输入:

    $ tmux
    

    很好,进入到了另一个异次元,其实看起来和刚才没多大区别,也就是屏幕闪了一下。

  • 这就是最原始的tmux界面,接下来记录进行最有用的,也是最经常用的三个操作

    进入tmux

Ctrl + b

  1. 意思就是在进入到tmux之后,先摁Ctrl,再摁 b,发现进入到了上帝模式,姑且当这种模式就是能干任何事的上帝模式,进入这个模式要干嘛?
  2. 比如创建新的界面,或者分割当前界面,退出当前界面都要靠这个模式。
  3. 所以记下这个简单的组合键,日后会经常用它

后面提到上帝模式,就说明摁了 Ctrl+b

上帝模式下的屏幕分割

  • 进入上帝模式后,使用 % 进行屏幕的水平分割,至于问我怎么竖直分割,我不喜欢用,所以忘了。

% 的意思就是,先摁住shift键,再摁数字5,不是小键盘的5,而是英文字符上面的那个5: )

水平分割tmux

  • 分割完,要怎么在这两个窗口之间跳转呢?

    • 进入上帝模式,摁左右方向键切换。每切换一次,都需要重新进入上帝模式,才能进行下一次的切换
  • 要是不想要当前操作的这个分屏怎么办?

    • 进入上帝模式, 摁x,就像是右上角的叉叉一样,很好记。

退出 tmux

  • 进入上帝模式,摁 d ,其实这不是退出,这叫做断开连接,意味着你可以再恢复
  • 不信,你试试

    $ tmux a
    
  • 原归正转,当你回到原始Shell时,使用命令 tmux ls,看看会出现什么:

    $ tmux ls
    

    出现

    root@kali:~/ClionProjects/httpd3# tmux ls
    0: 1 windows (created Mon Mar 28 08:39:01 2016) [150x40]****
    

    现在从这行回馈中,能得到对我们最有用的是两个信息:当前有一个 tmux窗会话,这个会话的名字是 0

进入tmux

tmux 可以有多个会话,一个会话可以有多个窗口, 从外部Shell可以连接到不同会话,从内部会话可以切换不同的窗口。

  • 得到了名字有什么用?得到了名字,你就能掌控这个会话的一切,就像夏目友人帐,跑题。

    • 连接到这个会话(如果有多个会话,这就十分有用):

      $ tmux attach -t 0
      

      或者

      $ tmux a -t 0
      

      a 是对 attach 的缩写,现在能理解上面那个d的含义了吧,就是detach的意思。

    • 关闭这个会话:

      $ tmux kill-session -t 0
      

      关闭这个会话,这个会话里的一切都消失了(当然你要是重启系统,自然也会消失)

      配置 tmux

  • 上面所说的三个组合,是最常用的三个组合键,记好它们,有人会问我,你的底部状态栏怎么和我的不一样,当然是配置问题

  • vim一样,tmux也有一个配置文件,放在家目录下的.tmux,也就是说在shell里输入

    $ cd ~
    

    进入的目录里,找到.tmux.conf,如果没有就:

    $ touch .tmux.conf
    

    不要怕会误删什么东西。打开它,输入如下内容:

    set -g base-index 1
    set -g status-utf8 on
    set -g status-bg black
    set -g status-fg white
    set -g status-interval 5
    set -g status-left-length 90
    set -g status-right-length 60
    set -g status-left "#[fg=Green]#(whoami)#[fg=white]::#[fg=blue]#(hostname -s)#[fg=white]::#[fg=yellow]#(curl ipecho.net/plain;echo)#[fg=Green] <- "
    set -g status-justify left
    set -g status-right '#[fg=Cyan]#S #[fg=white]%a %d %b %R'
    

    稍微解读一下第八行,这样你也可以自己修改配置文件了,很简单(更高级的请看官方文档,以及这个配置文件也不是我原创是属于这位先生的,当然我进行了一点小小的修改)

    ""里面包裹着一长串的看不懂的英文, #分割着每个属性,[]里面装放着是下一个#属性的显示颜色,()包裹着的理解为可以在shell下执行的命令,将结果显示出来,想要添加固定字符串,直接写就行,例如我在末尾添加了 <-

    网上有很多介绍 tmux 的文章,但不要轻易相信他们,永远相信自己实践出来的效果,因为网页文章的质量没有人监管,很多都是错误的,让初学者摸不着头脑(也许是手误打错,也许是真的不会装懂。)

    我这个配置文件的效果,就在上面的图片中有显示。

想让这个配置文件生效,必须要将所有的 tmux 窗口都退出才行。

比较懒的,可以去直接拿我用,在Github

到目前为止的组合键

  • 创建且打开tmux的会话 : $ tmux
  • 让这个会话的当前窗口水平分割 : Ctrl + b --> %
    • 在分割的两个块中跳转 : Ctrl + b --> 方向键
    • 关闭某个分屏 : Ctrl + b --> x
  • 让这个会话断开连接,回到原始Shell : Ctrl + b --> d
  • 让这个会话恢复连接,回到 tmux : tmux a -t 0
  • 从原始Shell把这个会话彻底关闭 : $ tmux kill-session -t 0

详细的说

  1. 创建会话的时候,如果不指定名称,那么tmux会帮你给这个会话取名字,也就是前面看到的数字,依次递增,如果想自己指定名称那么:

    $ tmux new -s session-1-name
    

    会立即进入到你创建的这个新会话内,现在通过detach回到原始Shell,并输入tmux ls

    session-1-name: 1 windows (created Mon Mar 28 09:28:54 2016) [150x40]
    

    现在再看看这条信息,应该很清晰明了,:前面是会话名称,后面是这个会话里当前有几个窗口

    当然你想要重命名这个会话也是可以的,只要进入上帝模式以后,摁 $即可

  2. 创建窗口

    1. 在上帝模式下,摁c,就能创建一个新窗口,并且立即进入到新窗口内,如何在窗口之间切换呢?
    2. 这时候看你的底部状态栏,在<-后面是不是多了些什么,没错那些就是新的窗口,每个窗口前面都有序号,在上帝模式下,摁对应的序号就能切换到那个窗口去。
    3. 但是有没有发现一个问题,新建的窗口的名字都一样!那怎么区分啊,不急一般在创建窗口之后会立即修改他的名字
      1. 进入上帝模式,摁 , 就能修改了,你会发现下面的状态栏变成黄色,且可编辑,删除原来的名字换成自己想要的名字就行。
  3. 切换会话

    1. 如果我就在会话中,想要到别的会话去,拿到一定要先回到原始Shell在去连接吗?当然不
    2. 直接进入上帝模式,摁s,就能看见当前存在的会话,移动方向键选择即可。
      1. Ctrl + b --> s

会话切换

  1. 切换窗口
    1. 如果我想显示当前会话中的所有窗口,那就进入上帝模式,再摁 : w
      1. Ctrl + b --> w

窗口切换

可以仔细观察一下,窗口的名字,是否有什么特殊的地方,文末解释

结束

  • 在日常中,只需要记住以上说过的命令就可以,其他的可以查看 man 手册就行,不需要记住,最实用的,才是最好的。

话内

  • 上面的操作看起来很复杂,实际上是一个很流畅的一套操作
  • 如果是日常个人电脑上的操作,可以这样:

    • 打开终端 Terminal
    • 直接打开 tmux : $ tmux 不必在意会话的名字(如果是公用的可以考虑用名字区分)
    • 直接分屏 Ctrl + b --> % 实际上水平分屏的作用已经足够,对于屏幕小于 17寸的显示器而言,对半分已经很完美了,要是分成四份,那真是有点…

      • 如果对分开的两个屏幕的大小有要求,可以自行调整,方式有些特别:摁住Ctrl+b不撒手,左右方向键调节窗口大小。
    • 想回到原始ShellCtrl + b --> d 当然这个一般很少用,我几乎不用

    • 回来就直接 $ tmux a

文末

  • 前面提到,在一个会话里有多个窗口的时候,窗口的名字会有些许不同
  • 名字末尾带 * 的是当前窗口,名字末尾带 -则是上一个窗口。
  • 至于为什么没有介绍更多的快捷键,那就需要自己凭个人去记就行,对于我而言,我只记了这些操作,认为已经足够
  • 而对于那些说什么 重新绑定快捷键什么的言语,我只说一句,看个人,不要想着说服别人,让别人主动去做才是对的。至少我没有感觉到不适应。

如转载请注明原处 : )

http://www.wushxin.top/2016/03/28/%E4%BD%BF%E7%94%A8tmux.html