Tmux,Linux下强大的终端复用器

Tmux是终端复用器(terminal multiplexer),功能类似 GNU Screen,采用 client/server 模型,支持多会话、多窗口、多窗格,是Linux下必备的终端工具。

软件档案:

名称:Tmux
官网:https://github.com/tmux/tmux
支持系统:Linux、OpenBSD、MAC OS X
软件授权:开源软件 ISC
源码地址:https://github.com/tmux/tmux
软件更新活跃度:高
软件官方使用指导:https://github.com/tmux/tmux/wiki
适用用户:所有Linux用户,尤其是需要SSH网络远程管理Linux的用户。

主要功能介绍:

  • 一个终端支持管理多个会话、多个窗口,窗口可任意垂直或水平拆分
  • 内部丰富且可自定义的快捷键,快速进行会话、窗口、窗格的创建、切换等管理
  • 不受断网影响,避免操作中断
  • 支持多终端共享会话,实现结对编程等功能

基本操作:

1、安装:

Linux主流发行版已收录该软件,Debian和Ubuntu可通过“sudo apt-get install tmux”安装,从源码安装最新版可参考:https://github.com/tmux/tmux/wiki/Installing

2、中文配置:

不支持。

3、配置文件:

~/.tmux.conf,如果不存在可先创建: touch ~/.tmux.conf,通过”tmux list-commands“可以查看所有 Tmux 命令及其参数。

基础使用:

安装后通过”tmux“命令即可进入Tmux窗口,exit命令或者Ctrd + d 即可退出,Tmux典型界面:

1、 窗格(pane) ∈ 窗口(window) ∈ 会话(session)

先打开会话,再打开窗口,最后打开窗格。

2、前缀键

Tmux所有的快捷建都需要前缀键唤醒才可使用,默认为 Ctrl + b,按下Ctrl + b后,输入“?”可以查看帮助信息,输入Esc或者“q”退出帮助。

会话(session)管理:

1、新建会话

  • tmux,不输入任何参数,Tmux自动从“0”开始分配会话编号
  • tmux new -s <session-name>,指定session名称

2、分离会话,退出当前 Tmux 窗口,但会话和里面的进程仍然在后台运行

  • Ctrl + b -> d
  • tmux detach

3、接入会话,用于重新接入某个已存在的会话

  • tmux attach,可简写为tmux a,不如任何参数会自动接入当前编号最早且有效的会话
  • tmux attach -t <num / session-name>,接入指定的 会话编号 / 会话名称
  • tmux list-session,可简写为tmux ls,查看当前所有的 Tmux 会话

4、切换会话

  • Ctrl + b -> s,选择对应的会话按回车切换
  • tmux switch -t <num / session-name>,切换到指定的 会话编号 / 会话名称

5、杀死会话

  • tmux kill-session -t <num / session-name>,杀死指定的 会话编号 /会话名称

6、重命名会话

  • tmux rename-session -t <num> <new-name>,重命指定编号的会话
  • Ctrl + b -> $,重命名当前会话

窗口(window)管理:

1、新建窗口

  • Ctrl + b -> c 或 tmux new-window [-n <window-name>],会自动为窗口从0开始编号

2、切换窗口

  • Ctrl+b -> <number>:切换到指定编号的窗口
  • Ctrl+b -> w:从列表中选择窗口切换
  • Ctrl + b -> p / n,切换到 上一个 / 下一个 窗口(按照状态栏上的顺序)
  • tmux select-window -t <window-number / <window-name>>  切换到指定编号或名称的窗口

3、重命名窗口

  • Ctrl + b -> , 或 tmux rename-window <new-name>

窗格(pane)管理:

1、拆分窗格

  • Ctrl + b -> ” 或者 tmux split-window,划分上下两个窗格
  • Ctrl + b -> % 或者 tmux split-window -h, 划分左右两个窗格

2、移动光标到对应窗格

  • Ctrl + b ->  <方向键>,光标切换到其他窗格。比如切换到上方窗格,就按方向键”↑“
  • Ctrl + b -> q -> <num>,num为在q显示的窗格号,光标切换到对应的num窗格
  • Ctrl + b -> ; / o,光标切换到 上一个 /下一个 窗格
  • tmux select-pane -U/-D/-L/-R,切换光标到上/下/左/右窗格

3、调整窗格布局

  • Ctrl + b -> <Space空格键>,内置窗格布局循环切换
  • Ctrl+b  -> Ctrl+<方向键>,按箭头方向调整窗格大小
  • Ctrl+b { / }, 当前窗格与 上一个 / 下一个 窗格交换位置
  • Ctrl+b -> Ctrl+o / Alt+o,所有窗格 向前 / 向后 移动一个位置

4、杀死窗格

  • Ctrl + b -> x

5、其他

  • Ctrl + b -> z,当前窗格全屏显示,再按一次还原
  • Ctrl + b -> !,将当前窗格拆分为一个独立窗口
  • Ctrl + b -> t,显示当前系统时间

快捷键配置:

在配置文件”~/.tmux.conf“中定义,可通过”tmux list-keys“列出所有快捷键、及其对应的 Tmux 命令

配置SSH登录后自动启用Tmux:

为所有用户添加,在”/etc/profile”后面添加;为指定用户添加,可以在对应用的Shell初始化脚本添加,如”.bashrc“:

if [[ -z "$TMUX" ]] && [ "$SSH_CONNECTION" != "" ]; then
    tmux has 2> /dev/null || tmux new-session -s new_ssh_tmux && tmux attach
fi

其他:

1、开启鼠标支持,在配置文件中添加:set -g mouse on 。

2、重新加载当前的 Tmux 配置:tmux source-file ~/.tmux.conf

参考链接:

1、Tmux 使用教程:https://www.ruanyifeng.com/blog/2019/10/tmux.html

2、SSH连接自动启动tmux:https://blog.csdn.net/T18736075818/article/details/85265697