Tmux 工具使用学习

2024-04-16 10:38
文章标签 工具 学习 使用 tmux

本文主要是介绍Tmux 工具使用学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。说来惭愧,因为最近偶然才接触这个工具,所以不是很熟悉。不过被他会话共享的功能深深吸引,所以话不多说,直接上菜(有图有真相)。

先是工具的安装,由于我用的是 centOS 的 Linux 虚拟机,所以安装是及其简单的,直接 yum install tmux 就好了,安装完成以后,使用命令创建一个会话,进入后查看会话编号,Windows 可以在命令行通过 ssh 连接到虚拟机系统,并根据查看到的会话标号同时使用 tmux attach 命令接入会话。

多用户相同账号会话共享

# Linux command line
[root@master ~]# yum install tmux
# balabala
# .......安装过程输出,此处省略.......
[root@master ~]# tmux 
# 进入了一个会话
[root@master ~]# tmux ls
0: 1 windows (created Thu Jul 23 22:35:17 2020) [156x20] (attached)
[root@master ~]# [0] 0:root@master:~*  
# Windows command line
C:\Windows\System32>ssh root@192.168.128.139
root@192.168.128.139's password:
Last login: Thu Jul 23 22:24:00 2020 from 192.168.128.1
[root@master ~]#
[root@master ~]# tmux attach -t 0

然后就是见证奇迹的时候了,Windows 命令行和 XShell 共享了一个会话窗口,两边都可以操作,而且操作对双方可见,是不是很神奇?而且我们能看到 XShell 对应的窗口的右边和下边有很多点点,相信大家都知道是什么原因造成的了,因为是会话共享,会话窗口的比例大小肯定要保持一致才可以,而 Xhell 窗口的空间更大,为了适配 Windows 端的会话窗口,多出来的地方就变成点点啦!整个过程当中,即使Windows命令行被异常关闭,当它再次远程连接进入会话的时候,还是可以看到这儿的 “Hello World, I am Looking.”。

当然,主动使用 exit 退出的不算。如果主动使用 exit 退出,大家就都退出会话窗口了。

多用户不同账号会话共享

不同账号实现会话的稍微麻烦一点,具体操作可参考这篇文章 天天都在用的 Tmux,可你知道如何在多用户间共享 Session 吗?_easylife206的专栏-CSDN博客。

# root 操作
[root@master ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@master ~]# id looking
uid=1001(looking) gid=1001(looking) groups=1001(looking)# 自己通过 -S 参数指定一个 Socket 文件来创建 Tmux Session,并进入会话
[root@master ~]# tmux -S /tmp/shared new-session -s shared# 添加 root 和 looking 账户为同一组(root添加到附加组)
[root@master ~]# usermod -a -G looking root
[root@master ~]# usermod -a -G looking looking
# 修改 /tmp/shared 的群体的使用者为 looking 组
[root@master ~]# chown :looking /tmp/shared 
# 查看用户 root ,发现已添加到了附加组 looking,这个时候 looking 用户就可以加入当前会话了
[root@master ~]# id root
uid=0(root) gid=0(root) groups=0(root),1001(looking)
# looking 操作
[looking@master ~]$ tmux -S /tmp/shared attach-session -t shared

会话管理

会话分离

[root@master ~]# tmux detach
[detached]
[looking@master ~]$ 

使用 tmux detach 命令进行会话分离(可再次进入),下图是 looking 用户分离出去以后两边的窗口对比(和 exit 不一样):

会话创建、查看和接入

[root@master ~]# tmux new -s test[root@master ~]# tmux ls
test: 1 windows (created Sat Jul 25 23:16:54 2020) [86x18] (attached)[root@master ~]# tmux attach -t test

会话杀死

# 在会话内外均可操作,结果当然是被迫退出会话
# -t target-session -t 表示目标会话
[root@master ~]# tmux kill-session -t test

会话切换

创建两个会话
[root@master ~]# tmux new -s test
[root@master ~]# tmux new -s test2左右终端分别进入对应两个会话
[root@master ~]# tmux attach -t test
[root@master ~]# tmux attach -t test2

# 左边终端使用会话名称切换会话
[root@master ~]# tmux switch -t test2# # 使用会话编号
# [root@master ~]# tmux switch -t 0

 

会话重命名

[root@master ~]# tmux rename-session -t test test2

窗格管理

窗格划分

# 垂直划分上下两个窗格   -v vertical
[root@master ~]# tmux split-window -v    # 水平划分左右两个窗格   -h horizontal                                       │
[root@master ~]# tmux split-window -h

光标移动

# 光标切换到上方窗格
[root@master ~]# tmux select-pane -U# 光标切换到下方窗格
[root@master ~]# tmux select-pane -D# 光标切换到左边窗格
[root@master ~]# tmux select-pane -L# 光标切换到右边窗格
[root@master ~]# tmux select-pane -R

窗格移动

# 当前窗格上移
[root@master ~]# tmux swap-pane -U# 当前窗格下移
[root@master ~]# tmux swap-pane -D

窗口管理

窗口创建

[root@master ~]# tmux new-window# 新建一个指定名称的窗口
[root@master ~]# tmux new-window -n <window-name

窗口切换

# 切换到指定编号的窗口
[root@master ~]# tmux select-window -t <window-number># 切换到指定名称的窗口
[root@master ~]# tmux select-window -t <window-name>

窗口重命名

[root@master ~]# tmux rename-window <new-name>

窗口杀死

[root@master ~]# tmux kill-window -t <window-number>

快捷键

快捷键使用

Tmux的快捷键需要使用 Ctrl+b 激活控制台后方可使用,比如快捷键 Ctrl+b d 的具体使用方法为:先同时(几乎同时,也就是 Ctrl 和 b 摁下的时间间隔不能太长,否则会激活控制台失败——我真是太操心了)摁住 Ctrl 和 b,然后松开 Ctrl 和 b (千万记住是两个键都要松开,不是只松开 Ctrl 或只松开 b),然后再摁下 d,于是成功分离当前会话,其他快捷键使用方法类似。

会话快捷键

  • Ctrl+b d:分离当前会话(等同于命令:tmux detach)。
  • Ctrl+b s:列出所有会话(类似于命令:tmux ls)。

  • Ctrl+b $:重命名当前会话(类似于命令:tmux rename-session -t test2 test3)。

窗格快捷键

  • Ctrl+b %:划分左右两个窗格(等同于命令:tmux split-window -h)。

  • Ctrl+b ":划分上下两个窗格(等同于命令:tmux split-window -v)。

  • Ctrl+b <arrow key>:光标切换到其他窗格(等同于命令:tmux select-pane -[U/D/L/R])。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键
  • 如果想一次完成光标多次切换,Ctrl+b 以后,可快速点击方向键进行多次切换,比如:Ctrl+b,→↓ 直接将光标从左上切换到右下。

  • Ctrl+b ;:光标切换到上一个窗格(类似于命令:tmux select-pane -U)。
  • Ctrl+b o:光标切换到下一个窗格(类似于命令:tmux select-pane -D)。
  • Ctrl+b {:当前窗格左移(类似于命令:tmux swap-pane -U)。
  • Ctrl+b }:当前窗格右移(类似于命令:tmux swap-pane -D)。
  • Ctrl+b Ctrl+o:当前窗格上移(光标不移)。
  • Ctrl+b Alt+o:当前窗格下移(光标不移)。
  • Ctrl+b x:关闭当前窗格(关闭前会询问是否确定关闭)。
  • Ctrl+b space:窗格布局切换。

  • Ctrl+b !:将当前窗格拆分为一个独立窗口。

  • Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
  • Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。
  • Ctrl+b Alt+<arrow key>:按箭头方向大步调整窗格大小。

  • Ctrl+b q:显示窗格编号(只临时显示一下,大概1秒后取消显示)。

窗口快捷键

  • Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。

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

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

  • Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号。
  • Ctrl+b w:从列表中选择窗口。

  • Ctrl+b ,:窗口重命名。

  • Ctrl+b &:窗口杀死。

  • Ctrl+b [PgUp]:翻页。Esc 退出翻页。

设置鼠标模式

其实最为方便的是还可以设置鼠标模式,设置以后就可以使用鼠标滚轮,鼠标切换面板之类的操作了。如果设置了选中自动复制,那么开启鼠标模式以后,请使用 Shift + 鼠标选中 来进行内容选中,然后就可以将选中内容自动复制了。

tmux set-option -g mouse on旧版使用下面的命令设置
tmux set-option -g mode-mouse on
tmux set-option -g mouse-resize-pane on        # 开启鼠标拖动调节面板大小
tmux set-option -g mouse-select-pane on        # 开启鼠标点击切换面板
tmux set-option -g mouse-select-window on      # 开启鼠标点击切换窗口
tmux set-option -g mode-mouse on               # 开启鼠标滚轮查看历史记录

快捷键前缀

默认的快捷键前缀是 Ctrl+b

[detached]
[root@master ~]# tmux show-options -g | grep prefix
prefix C-b
prefix2 none

但是 Ctrl 和 b 这两个键实在是隔得太远了,用起来很不方便,所以我们可以自己修改一下。

[root@master ~]# tmux set -g prefix C-s
set option: prefix -> C-s

永久修改就将上面内容写到 ~/.tmux.conf 文件并使用 source 让它生效。

source ~/.tmux.conf

这篇关于Tmux 工具使用学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908562

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完