• Tmux教学【有图有代码】


    0、前言

    想必同学们在跑代码时也许会存在这样一个问题:
    本地在连接远程服务器跑代码的时候,本地ssh窗口一旦关闭,那么远程任务也停止了。这样的话就需要本地一直开着这个窗口,这是一件非常不方便的事情。😕😕😕

    那么今天介绍的Tmux是可以解决上面的问题的一个小工具,一旦学会了,对于日后代码开发也是非常有帮助的。😍😍😍

    1、Tmux基本概念

    在这里插入图片描述
    Tmux是一个终端复用器(terminal multiplexer),属于常用的开发工具,学会了之后可以大大的提高工作效率。

    在使用tmux之前我们先了解关于tmux的几个名词:

    1. session,会话(任务)
    2. windows,窗口
    3. pane,窗格

    下面放一个图,来介绍什么是上面三个,首先创建多个session。
    tmux new -s session1
    然后先 ctrl+b+ d 将当前session与窗口分离
    然后继续创建session
    tmux new -s session2
    继续 ctrl+b+ d 将当前session与窗口分离
    重复上面的步骤就可以创建多个session
    之后进入tmux,按 ctrl+b+ w 得到下面图片
    在这里插入图片描述
    - 开头的就是session。每个session对应下面的就是windows,windows可以有多个,即一个session对应多个windows。
    下面tmux new-window或者tmux new-window -n your-window-name自定义window名字。按 ctrl+b+ w 如下图得到多个windows:
    在这里插入图片描述
    然后window里面又可以分多个pane(窗格),左右划分ctrl+b %
    上下划分:ctrl+b " 得到如下图:
    在这里插入图片描述
    具体窗格操作见下面的介绍。快捷键记不住可以用ctrl+b+ ?来进行查看。看到这里想必下面的知识也不难理解了,理解不了的也可以先看下面,然后回来再看,有助于理解。

    关于session,很多人把session称为会话,但我觉得叫任务更适合一些。

    在普通的终端中,窗口和其中由于session(任务)而启动的进程是连在一起的,关闭窗口,session就结束了,session内部的进程也会终止,不管是否运行完。但是在具体使用中,我们希望当前的session隐藏起来,在终端中做其他事情,但是又不希望session及其进程被关闭。这样就需要用到tmux,对session进行解绑。之后再想继续出来这个session的时候,再次绑定就可以回到之前的工作状态。

    对于window可以理解为一个工作区,一个窗口

    对于一个session,可以创建好几个window,对于每一个窗口,都可以将其分解为几个pane小窗格。

    所以,关于session、window、pane的关系是:
    [ p a n e ∈ w i n d o w ] ∈ s e s s i o n [pane \in window] \in session [panewindow]session

    1.1 安装

    # Ubuntu or Debian
    sudo apt-get install tmux
    
    # CentOS or Fedora
    sudo yum install tmux
    
    # Mac
    brew install tmux
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、Tmux使用

    2.1 session操作

    1. 启动
      新建session,可以在terminal上输入tmux命令,会自动生成一个id为0的session
    tmux
    
    • 1

    也可以在建立时显式地说明session的名字这个名字可以用于解绑后快速的重新进入该session:

    tmux new -s your-session-name
    
    • 1
    1. 分离

    在tmux窗口中,按下 ctrl+b d 或者输入以下命令,就会将当前session与窗口分离,session转到后台执行:

    tmux detach
    
    • 1
    1. 退出
      如果你想退出该session,可以杀死session:
    tmux kill-session -t your-session-name
    
    • 1

    当然,也可以使用ctrl+d关闭该session的所有窗口来退出该session。

    1. 绑定、解绑、切换session
      假设现在正处于session1,使用分离操作就是将session1进行解绑:
    tmux detach
    
    • 1

    而如果你想再次绑定session1,可以使用命令:

    tmux attach -t your-session-name
    
    • 1
    1. 切换到指定session:
    tmux switch -t your-session-name
    
    • 1
    1. 重命名session
    tmux rename-session -t old-session new-session
    
    • 1

    2.2 window操作

    一个session可以有好几个window窗口。

    1. 新建窗口tmux new-window
    # 新建一个指定名称的窗口
    tmux new-window -n your-window-name
    
    • 1
    • 2
    1. 切换窗口
      命令就不记了,使用快捷键更方便:
    • ctrl+b c: 创建一个新窗口(状态栏会显示多个窗口的信息)

    • ctrl+b p: 切换到上一个窗口(按照状态栏的顺序)

    • ctrl+b n: 切换到下一个窗口

    • ctrl+b w: 从列表中选择窗口(这个最好用)

    1. 重命名窗口
    tmux rename-window -t old_name new_name
    
    • 1

    2.3 pane操作

    tmux可以将一个窗口分为几个窗格(pane),每个窗格运行不同的命令。

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

    其实划分窗格pane使用快捷键更方便,如果你当前pane正在运行程序不就没法使用命令了嘛。

    左右划分:ctrl+b %
    上下划分:ctrl+b "

    1. 光标位置
      使用语句太麻烦了,使用快捷键最好:ctrl+b arrow-key(方向键):光标切换到其他窗格
    2. 交换窗格位置
    # 当前窗格往上移
    tmux swap-pane -U
    
    # 当前窗格往下移
    tmux swap-pane -D
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 关闭窗格
      ctrl+d,记住如果只有一个窗格就是关闭window哦

    2.4 其他操作

    # 列出所有快捷键,及其对应的 Tmux 命令
    $ tmux list-keys
    
    # 列出所有 Tmux 命令及其参数
    $ tmux list-commands
    
    # 列出当前所有 Tmux 会话的信息
    $ tmux info
    
    # 重新加载当前的 Tmux 配置
    $ tmux source-file ~/.tmux.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • tmux上下翻屏
      使用快捷键 ctrl+b [ ,就可以通过方向键上下移动使用PageUpPageDown可以实现上下翻页。

    3、日常中Tmux的工作流

    1. 新建会话tmux new -s my_session
    2. 在 Tmux 窗口运行所需的程序。
    3. 按下快捷键Ctrl+b d将会话分离。
    4. 下次使用时,重新连接到会话tmux attach-session -t my_session
      (重要的是退出按Ctrl d会结束session,而Ctrl+b d会保留session)

    tmux ls查看所有session,方便进入。

    推荐缩写使用

    • tmux a -t my_session:等同于tmux attach-session -t my_session
    • tmux ls:等同于tmux list-sessions
    • tmux new -s :等同于tmux new-session -s
  • 相关阅读:
    dev的CheckedComboBoxEdit下拉框控件设置成单选框
    Java基础知识【String、StringBuffer、StringBuilder、==与equal()的区别】
    【学习记录】tensorflow图像数据增强
    Redis基本命令的学习和Jedis
    扩展翡蜀定理问题
    第四次考核 Jimmy 学徒考核 Linux安装软件 rnaseq上游分析
    Spring——IOC 操作 Bean 管理(FactoryBean,作用域以及bean生命周期)
    边缘计算如何与小程序结合?智能家居如何借势发展?
    Java复习-20-接口(2)- 工厂设计模式
    SAP ABAP 主动调用外部系统的REST接口(x-www-form-urlencoded)
  • 原文地址:https://blog.csdn.net/qq_45934285/article/details/133797361