首页 > 其他分享 >快速重拾 Tmux

快速重拾 Tmux

时间:2023-04-13 09:00:32浏览次数:27  
标签:Window tmux 快捷键 prefix session Tmux Pane 重拾 快速

Tmux 是一个 Linux (Mac OS也支持)下的终端复用器,相较于 Screen 更为强大,但快捷键和操作逻辑也更复杂,一段时间不用,就很容易忘记相关的命令和快捷键。本文旨在通过一个简单的场景,快速重拾 Tmux

Tmux 通常用来保持会话(session),如果我们通过 ssh 连接服务器处理打包等的耗时操作,那么网络波动可能会导致连接断开,使得操作失败,使用 Tmux 会话会被保持,任务依然会继续,我们可以随时恢复会话

Tmux 另一个常用的功能是分屏,快速地创建 Window 和 Pane,方便地在不同的任务间穿梭

修改配置

vim ~/.tmux.conf
# 将默认修饰键(prefix) ctrl + b 修改:ctrl + a
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# 激活鼠标模式
set-option -g -q mouse on

# 修改分屏快捷键
# 左右分屏
bind h split-window -h
# 上下分屏
bind v split-window -v

# 可以取消默认的分屏快捷键映射
# unbind '"'
# unbind %

# 将 tmux 的复制模式键绑定设置为 vi 模式
setw -g mode-keys vi

重新加载 Tmux 配置文件

tmux source-file ~/.tmux.conf

命令 & 快捷键

命令

这些命令大多是用于 tmux Session 的增删改查,一些命令进入 tmux 后将无法使用

# 创建新的 session
tmux new -s <session-name>
# 删除 seesion
tmux kill-session -t 0
# 重命名 seesion
tmux rename-session -t 0 <new-name>
# 查看 所有 session
tmux ls

# 进入最近使用的 session
tmux attach
# 进入编号为 1 的 session 
tmux attach -t 1

可以定义一些 alias 简化输入

# 添加到 shell 初始化脚本中
# Bash Shell 是 ~/.bashrc
# Zsh Shell  是 ~/.zshrc

alias tnew='tmux new -s'
alias tatt='tmux attach'
alias tkill='tmux kill-session -t'
alias tkillall='tmux kill-session -a'
alias tname='tmux rename-session -t'
alias tls='tmux ls'

快捷键

在使用下面的快捷键之前,都需要先按 tmux 的修饰键(prefix),修改后的修饰键为:Ctrl + a;具体做法是:先按住 Ctrl 再按一下 a,这时可以松开 Ctrl 和 a,这时 prefix 已经生效了,我们可以加上下面的任意按键以实现对应的功能

tmux 有 SessionWindowPane 这三个比较重要的概念

会话 Seesion

  • d:分离会话(detach)
  • $:修改当前 Session 名称
  • s:显示 Session 列表(session)

窗口 Window

  • c:创建一个新的 Window (create)
  • p:切换到上一个 Window(previous)
  • n:切换到下一个 Window(next)
  • w:显示 Window 列表(window)
  • ,:修改当前 Window 的名称
  • 数字键:切换到对应编号的 Window,比如 prfix + 0 就是切换到编号为 0 的 Window

窗格 Pane

  • %:创建一个 Pane(水平排布),使用前面的配置后,可以使用 h(horizontal)
  • ":创建一个 Pane(垂直排布),使用前面的配置后,可以使用 v(vertical)
  • 空格:Pane 的垂直排布和水平排布之间相互转换
  • x:移除当前 Pane,会出现提示是否需要 kill-pane,输入 y 确认,也可以使用 ctrl + d(无需按 prefix)直接终止 pane
  • z:全屏当前 Pane
  • ;:将光标移动到上次使用的 Pane
  • o:将光标移动到下一个 Pane(顺时针)
  • Ctrl + o:旋转当前窗口的pane,下一个 Pane 会代替上一 Pane 的位置,光标会保持在原 Pane
  • Alt + 方向键:以 5 个单元格为单位移动边缘以调整当前面板大小

复制文本

  • [:进入复制模式,因为我们配置了 setw -g mode-keys vi 所以我们可以直接用 vim 的快捷键跳转单词或者行

我们可以通过 空格键 开始选中,这时移动光标可以扩大选取,按 回车 完成文本复制

  • ]:粘贴复制的文本

进入复制模式后,可以通过 q 退出复制模式

场景

tmux 就像 vim 一样,如果不经常使用,就很容易忘记快捷键,可以通过一个场景把这些零碎的知识串起来,同时场景也方便重复练习和举一反三

我们可以在 tmux 里,编译运行一个 c 的 hello world,prefix 默认为 Ctrl + b,配置里我们修改为 Ctrl + a

  1. 使用 tmux 创建新的 Session,并指定名称为:run-c
# 使用 alias 的话可以用 tnew run-c
tmux new -s run-c
  1. 我们可以使用 prefix + , 将 Windows 名称修改为 hello-world

  2. 使用 vim 编辑 hello.c

vim hello.c

按 i 进入 vim 的编辑模式,输入:

#include<stdio.h>

int main(){
    printf("hello world\n");
}

ESC 退出编辑模式,键入 :w 保存输入

  1. 使用 prefix + % (修改了配置则可以使用 prefix + h)在右侧添加一个新的 Pane 用于编译

  2. 新增的 Pane 将屏幕一分为二,但是编译不需要这么大,我们可以通过 prefix + Alt + 右方向键 缩小 Pane 宽度,按完 prefix 后,可以多次按 Alt + 右方向键 持续缩小 Pane 宽度

  3. 在右侧 Pane 我们可以使用 gcc hello.c 编译 hello.c

  4. 使用 ./a.out 运行 hello world 程序

  5. 使用 prefix + ;,将光标切换回左侧 Pane,如果觉想暂时收起右侧的 Pane,可以用 prefix + z,最大化或取消最大化当前 Pane

  6. 我们可以继续编辑文件,输入 i 进入 vim 编辑模式,将 world,修改为 tmux,按ESC 退出编辑模式,键入 :w 保存输入

  7. 使用 prefix + ;,将光标切换回右侧 Pane,完成编译和运行

gcc hello.c
./a.out
SH 复制 全屏
  1. 使用 prefix + x,关闭右侧 Pane,按 y 确认关闭

  2. 使用 prefix + d(tmux detach),将当前会话与窗口分离,回到我们自己的 Shell

  3. 使用 tmux attach(修改了配置则可以使用 tatt),回到我们刚出 detach 的 Session

标签:Window,tmux,快捷键,prefix,session,Tmux,Pane,重拾,快速
From: https://www.cnblogs.com/juma9005/p/17312120.html

相关文章

  • Docker快速入门 第一篇
    目录Docker容器一、前言1、什么时虚拟化2、cocker是什么3、容器与虚拟化的区别4、Docker的概念二、安装dockerDocker容器一、前言1、什么时虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转......
  • Docker快速入门 第二篇
    目录Docker一、Iass-Paas和Saas1、简介二、Docker常用命令1、镜像站设置2、启动/停止常用命令三、镜像命令相关四、容器相关命令Docker一、Iass-Paas和Saas1、简介什么是lass-Pass和Saas:#Iaas:Infrastructure-as-a-Service(基础设施即服务) IaaS公司会提供场外服务器,存储......
  • w6 T325337 【模板】快速排序
     主要思路:整体思路就是把<num[mid]的元素扔到mid左边,把>num[mid]的元素扔到mid右边,然后用同样的方法对mid左边和右边的序列进行处理。在代码实现上我使用了双指针。以样例为例:num[0]=4num[1]=2num[2]=4num[3]=5num[4]=1mid=num[2]第一次处理后:12454mid_left=num[0......
  • 服务日志快速查询命令
    一、cat|grep命令的使用1.单个关键字查询日志cat日志文件名.log|grep'关键字' //单行显示cat日志文件名.log|grep'关键字'-B5//之前5行B的释义:Beforecat日志文件名.log|grep'关键字'-A5//之后5行A的释义:Aftercat日志文件名.log|......
  • 快速搭建一个go语言web后端服务脚手架
    快速搭建一个go语言web后端服务脚手架源码:https://github.com/weloe/go-web-demoweb框架使用gin,数据操作使用gorm,访问控制使用casbin首先添加一下自定义的middlewarerecover_control.go,统一处理panicerror返回的信息packagemiddlewareimport( "fmt" "github.com/gin-......
  • UVa 10041 Vito's Family (中位数&快速选择)
    10041-Vito'sFamilyTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=982BackgroundTheworld-knowngangsterVitoDeadstoneismovingtoNewYork.He......
  • UVa 374 Big Mod (快速幂取模)
    374-BigModTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=310Calculateforlargevaluesof B, P,and M usinganefficientalgorithm.(That'sright,......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-场景问题智能生成从0到1快速入门——官网推荐
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能多功能学习机从0到1快速入门——官网推荐
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能评论创建从0到1快速入门——官网推荐的48
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......