• Tmux 使用教程


    一、概述

    Tmux 是一个终端复用器terminal multiplexer),非常有用,属于常用的开发工具。

    1、会话与进程

    https://blog.csdn.net/matafeiyanll/article/details/109788874

    会话的一个重要特点是,窗口与其中启动的进程连在一起的。打开窗口,会话开始关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。

    一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。

    为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。

    2、Tmux 的作用

    Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。

    1、它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
    2、它可以让新窗口"接入"已经存在的会话
    3、它允许每个会话多个连接窗口,因此可以多人实时共享会话。
    4、它支持窗口任意垂直水平拆分。

    3、其他说明

    类似的终端复用器还有 GNU ScreenTmux 与它功能相似,但是更易用,也更强大。

    二、tmux 用法

    1、概要

    tmux [-2CluvV] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [command [flags]]
    
    • 1

    2、描述

    Tmux 是一种终端多路复用器:它允许从一个屏幕上创建访问控制多个终端。Tmux 可以从屏幕上分离出来,在后台继续运行,然后再重新连接

    tmux 启动时,它会创建一个带有单个窗口新会话,并将其显示在屏幕上。屏幕底部的状态行显示当前会话的信息,用于输入交互式命令。

    会话是 tmux 管理下的伪终端的单一集合。每个会话都有一个或多个窗口链接到它。一个窗口占据整个屏幕,可以被分割成矩形窗格,每个窗格都是一个单独的伪终端(pty(4)手册页记录了伪终端的技术细节)。任意数量的 tmux 实例都可以连接到同一个会话,并且同一会话中可能存在任意数量的窗口。一旦所有会话被杀死,tmux 退出。

    每个会话都是持久的,并将在意外断开连接(例如ssh(1)连接超时)或有意分离(使用 ' C-b - d ' 键击)时存活。Tmux 可以使用以下方法重新连接:

    tmux attach
    
    • 1

    tmux 中,一个会话由客户机显示在屏幕上,所有会话都由一个服务器管理。服务器和每个客户端是独立的进程,它们通过 /tmp 中的套接字进行通信。

    选项如下:

    • -2:强制 tmux 假定终端支持 256 种颜色。
    • -C :以控制模式启动(请参阅控制模式一节)。给定两次(-CC)禁用回声。
    • -c shell-command:使用默认 shell 执行 shell-command。如果有必要,将启动 tmux 服务器以检索默认 shell 选项。当使用 tmux 作为登录 shell 时,此选项是为了与sh(1)兼容。
    • -f file:请指定可选的配置文件。默认情况下,tmux/etc/tmux.conf 加载系统配置文件,如果存在,然后在 ~/.tmux.conf 查找用户配置文件。配置文件是一组 tmux 命令,这些命令在服务器第一次启动时按顺序执行。当服务器进程启动时,Tmux 加载一次配置文件。source-file 命令可能用于以后加载一个文件。
    • -L socket-nametmux 将服务器套接字存储在 TMUX_TMPDIR 下的目录中,如果未设置则将其存储在 /tmp 下。默认的套接字名为 default。该选项允许指定不同的套接字名称,允许运行多个独立的 tmux服务器。与 -S 不同,不需要完整路径:套接字都是在同一个目录中创建的。
    • -l:表现为登录 shell 。此标志目前没有效果,是为了在使用 tmux 作为登录 shell 时与其他 shell 兼容。
    • -S socket-path指定服务器套接字的完整替代路径。如果指定了 -S,则不使用默认套接字目录,并且忽略任何-L 标志。
    • -u:启动时,tmux查找 LC_ALLLC_CTYPELANG 环境变量:如果第一个找到的变量包含 'UTF-8',则假定终端支持 UTF-8。这并不总是正确的:-u 标志显式地通知 tmux 支持 UTF-8。注意 tmux 本身总是接受 UTF-8;它控制是否将 UTF-8 字符发送到它正在运行的终端(如果不是,它们将被 '_' 替换)。
    • -v:要求详细的日志记录。日志消息将保存在当前目录下的 tmux-client-PID.logtmux-server-PID.log 文件中,其中 PID 为服务器或客户端进程的 PID。如果两次指定 -v,则生成一个额外的 tmux-out-pid.log 文件,其中包含 tmux 写入终端的所有内容的副本。
    • -V:报告 tmux 版本。
    • command [flags]:这指定用于控制 tmux 的一组命令中的一个,如下面的小节所述。如果没有指定命令,则假定使用 new-session 命令。

    3、按键绑定

    tmux 可以通过使用前缀键 'C-b' (Ctrl-b) 的组合键从连接的客户端控制,默认情况下,后面跟着一个命令键

    默认的命令键绑定是:

    • C-b:将前缀密钥 (C-b) 发送到应用程序。
    • C-o:向前旋转当前窗口中的窗格。
    • C-z:挂起 tmux 客户端。
    • !:把当前的窗格从窗口打碎。
    • ":将当前窗格拆分为两个,顶部和底部。
    • #:列出所有的粘贴缓冲区。
    • $:重命名当前会话。
    • %:将当前窗格分为左窗格和右窗格。
    • &:关闭当前窗口。
    • ':提示要选择的窗口索引。
    • (:将附加的客户端切换到前一个会话。
    • ):将连接的客户端切换到下一个会话。
    • ,:重命名当前窗口。
    • -:删除最近复制的文本缓冲区。
    • .:提示移动当前窗口的索引。
    • 0~9:选择窗口 0~9
    • ::输入 tmux 命令提示符。
    • ;:移动到先前活动的窗格。
    • =:从列表中选择要交互粘贴的缓冲区。
    • ?:列出所有键绑定。
    • D:选择要分离的客户机。
    • L:将连接的客户端切换回上一个会话。
    • [:进入复制模式,复制文本或查看历史记录。
    • ]:粘贴最近复制的文本缓冲区。
    • c:创建一个新窗口。
    • d:分离当前客户端。
    • f:提示在打开的窗口中搜索文本。
    • i:显示当前窗口的一些信息。
    • l:移动到先前选择的窗口。
    • n:切换到下一个窗口。
    • o:选择当前窗口中的下一个窗格。
    • p:切换到前一个窗口。
    • q:简要显示窗格索引。
    • r:强制重绘附加的客户端。
    • m:标记当前窗格(参见 select-pane -m )。
    • M:清除已标记的窗格。
    • s:以交互方式为附加的客户机选择一个新会话。
    • t:显示时间。
    • w:交互式地选择当前窗口。
    • x:关闭当前窗格。
    • z:切换当前窗格的缩放状态。
    • {:将当前窗格与前一个窗格交换。
    • }:将当前窗格与下一个窗格交换。
    • ~:显示来自 tmux 的以前的消息(如果有的话)。
    • Page Up:进入复制模式,向上滚动一页。
    • UpDownLeftRight:更改到当前窗格的上面、下面、左边或右边。
    • M-1~M-5:按五种预设布局之一排列窗格:均匀水平、均匀垂直、主水平、主垂直或平铺。
    • Space:在下一个预设布局中排列当前窗口。
    • M-n:移动到下一个带有铃铛或活动标记的窗口。
    • M-o:向后旋转当前窗口中的窗格。
    • M-p:移动到带有铃铛或活动标记的前一个窗口。
    • C-UpC-DownC-LeftC-Right:在一个单元格的步骤中调整当前窗格的大小。
    • M-UpM-DownM-LeftM-Right:按五个单元格的步骤调整当前窗格的大小。

    4、命令

    注:通过 man tmux 查看帮助。

    5、会话操作

    1、新建会话

    tmux new -s <session-name>
    
    • 1

    第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是 1,以此类推。使用编号区分会话,不太直观,更好的方法是为会话起名。

    2、分离会话
    Tmux 窗口中,按下 Ctrl+b d 或者输入 tmux detach 命令,就会将当前会话与窗口分离。

    tmux detach
    
    • 1

    3、查看 Tmux 会话

    tmux ls
    # or
    tmux list-session
    
    • 1
    • 2
    • 3

    4、接入会话
    tmux attach 命令用于重新接入某个已存在的会话。

    # 使用会话编号
    tmux attach -t 0
    
    # 使用会话名称
    tmux attach -t <session-name>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5、杀死会话
    tmux kill-session 命令用于杀死某个会话。

    # 使用会话编号
    tmux kill-session -t 0
    
    # 使用会话名称
    tmux kill-session -t <session-name>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6、切换会话
    tmux switch 命令用于切换会话。

    # 使用会话编号
    tmux switch -t 0
    
    # 使用会话名称
    tmux switch -t <session-name>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7、重命名会话
    tmux rename-session 命令用于重命名会话。

    tmux rename-session -t 0 <new-name>
    
    • 1

    5、窗格操作

    1、划分窗格

    # 划分上下两个窗格
    tmux split-window
    
    # 划分左右两个窗格
    tmux split-window -h
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、移动光标
    tmux select-pane 命令用来移动光标位置。

    # 光标切换到上方窗格
    tmux select-pane -U
    
    # 光标切换到下方窗格
    tmux select-pane -D
    
    # 光标切换到左边窗格
    tmux select-pane -L
    
    # 光标切换到右边窗格
    tmux select-pane -R
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3、交换窗格位置
    tmux swap-pane 命令用来交换窗格位置。

    # 当前窗格上移
    tmux swap-pane -U
    
    # 当前窗格下移
    tmux swap-pane -D
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4、窗格快捷键

    Ctrl+b %:划分左右两个窗格。
    Ctrl+b ":划分上下两个窗格。
    Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。
    Ctrl+b ;:光标切换到上一个窗格。
    Ctrl+b o:光标切换到下一个窗格。
    Ctrl+b {:当前窗格与上一个窗格交换位置。
    Ctrl+b }:当前窗格与下一个窗格交换位置。
    Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。
    Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。
    Ctrl+b x:关闭当前窗格。
    Ctrl+b !:将当前窗格拆分为一个独立窗口。
    Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
    Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。
    Ctrl+b q:显示窗格编号。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    6、窗口管理

    1、新建窗口
    tmux new-window 命令用来创建新窗口。

    tmux new-window
    
    # 新建一个指定名称的窗口
    tmux new-window -n <window-name>
    
    • 1
    • 2
    • 3
    • 4

    2、切换窗口
    tmux select-window 命令用来切换窗口。

    # 切换到指定编号的窗口
    tmux select-window -t <window-number>
    
    # 切换到指定名称的窗口
    tmux select-window -t <window-name>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、重命名窗口
    tmux rename-window 命令用于为当前窗口起名(或重命名)。

    tmux rename-window <new-name>
    
    • 1

    4、窗口快捷键

    Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。
    Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。
    Ctrl+b n:切换到下一个窗口。
    Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号。
    Ctrl+b w:从列表中选择窗口。
    Ctrl+b ,:窗口重命名。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    SAP 物料分类账配置详解Part 1( 基于SAP S/4HANA1909 版本)
    低代码平台进行应用开发--异行星低代码平台为例(二)
    【桥接设计模式详解】Java/JS/Go/Python/TS不同语言实现
    【深蓝学院】手写VIO第6章--视觉前端--作业(SVD分解部分复习)
    【故障公告】多年的故障老朋友又来了:数据库服务器 CPU 100%
    基于.NetCore开发博客项目 StarBlog - (19) Markdown渲染方案探索
    【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)
    vue源码笔记之——响应系统
    用 Python 自动创建 Markdown 表格 - 每天5分钟玩转 GPT 编程系列(4)
    Ansible-palybook学习
  • 原文地址:https://blog.csdn.net/OnlyLove_/article/details/127623122