快速重拾 Tmux
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 有 Session
、Window
、Pane
这三个比较重要的概念
会话 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
- 使用 tmux 创建新的 Session,并指定名称为:run-c
# 使用 alias 的话可以用 tnew run-c
tmux new -s run-c
我们可以使用
prefix + ,
将 Windows 名称修改为hello-world
使用 vim 编辑 hello.c
vim hello.c
按 i
进入 vim 的编辑模式,输入:
#include<stdio.h>
int main(){
printf("hello world\n");
}
按ESC
退出编辑模式,键入 :w
保存输入
使用
prefix + %
(修改了配置则可以使用 prefix + h)在右侧添加一个新的 Pane 用于编译新增的 Pane 将屏幕一分为二,但是编译不需要这么大,我们可以通过
prefix + Alt + 右方向键
缩小 Pane 宽度,按完 prefix 后,可以多次按Alt + 右方向键
持续缩小 Pane 宽度在右侧 Pane 我们可以使用
gcc hello.c
编译 hello.c使用
./a.out
运行 hello world 程序使用
prefix + ;
,将光标切换回左侧 Pane,如果觉想暂时收起右侧的Pane
,可以用prefix + z
,最大化或取消最大化当前Pane
我们可以继续编辑文件,输入
i
进入 vim 编辑模式,将world
,修改为tmux
,按ESC
退出编辑模式,键入:w
保存输入使用
prefix + ;
,将光标切换回右侧 Pane,完成编译和运行
gcc hello.c
./a.out
使用
prefix + x
,关闭右侧 Pane,按y
确认关闭使用
prefix + d
(tmux detach),将当前会话与窗口分离,回到我们自己的 Shell使用
tmux attach
(修改了配置则可以使用tatt
),回到我们刚出 detach 的 Session
参考资料
tmux: some considerations, some best practices
How to Boost 10X Productivity with Tmux
Tmux 使用教程 - 阮一峰
手把手教你使用终端复用神器 tmux
Tmux + Vim 工作流! 同时操作多个项目, 追求极致的丝滑流畅!
「TMUX」十分钟掌握 tmux -- 高效的终端复用工具 : )
十分钟掌握 TMUX
Y分钟速成X,其中 X=tmux
Tmux的快捷键,包括调整窗口大小
快速重拾 Tmux的更多相关文章
- CSS魔法堂:重拾Border之——更广阔的遐想
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——不仅仅是圆角
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——图片作边框
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——解构Border
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- 重拾Blog
上个月是我入职现在的公司三周年的月份,所以又续订了五年的合同,最近有一些思考,也不知道这个五年能否还会一直在这个公司工作. 一切随缘吧. 闲适有毒,忙碌的时光总是过的很快,自从加入这个公司以来,日常的 ...
- [linux]重拾linux
起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使 ...
- 重拾qt
最近公司又接了一个煤矿的项目,要写个小程序摘取数据,我是公司唯一c++程序员,本来搞ios搞好好的,现在又得重拾半年没摸得qt了.呵呵...呵呵呵. 这里只记录这次小程序的一些小的总结吧.. 1.中文 ...
- 重拾linux
重拾linux 起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做 ...
- 重拾C
重拾C,一天一点点_10 来博客园今天刚好两年了,两年前开始学编程. 忙碌近两个月,项目昨天上线了,真心不容易,也不敢懈怠,接下来的问题会更多.这两天调试服务器,遇到不少麻烦. 刚出去溜达了一下,晚上 ...
- ABP从入门到精通(6):快速重命名解决方案
SolutionRenamer SolutionRenamer 是一个解决方案快速重命名工具.经测试重命名一个全新asp.net zero core项目(ABP asp.net zero,.net c ...
随机推荐
- Pycharm 2021.3 的激活破解教程,永久激活,亲测有效
关注公众号回复 pycharm 即可获取激活脚本和教程 更新时间 2022年1月20日. 不定时更新 激活码可在公众号中回复[激活码]获取.
- aar 真机测试
工具 bundletool.jar 官方下载位置 https://github.com/google/bundletool/releases 下载后改下名字方便输入命令 将aar 放在G盘根目录 ja ...
- github 开源项目安装
1.打开github 2.搜索相关项目 3.使用系统下载安装 4.执行 指令;git clone git://github.com/****.git
- 任意的形如 z = F(x,y)的曲面生成与显示---基于OpenGL Core Profile
运行结果: (圆锥面) (抛物面) (马鞍面) 其中的做法是:从顶部看上去就是一个平面网格.每个点的 z.x的位置都是程序细分出来的(指定起始.结束.步长).比较固定.但高度 y 的计算使用 用户 ...
- keshe第三周
本周尝试在openeuler中运行java代码 实现bc库和crypto.gmsm 如下: 实现gmlib C语言库
- React支持less操作
React支持less操作 1.执行暴漏命令 npm run eject 2.输入" Y " 确认 这时候发现config文件夹没暴漏出来,是因为git没有暂存,得执行如下命令: ...
- day2 java基础语法
day1复习 1.java的特点 2.jdk,jre,jvm的关系 3.为什么要配置path 基本语法 1.关键字与保留字 2.标识符与标识符规则 3.java的命名规范 起名时提高阅读性尽量有意义 ...
- NDVI批量处理排除值-3000
代码如下: import arcpy from arcpy import env from arcpy.sa import * import sys reload(sys) sys.setdefaul ...
- 给jui(dwz)的navTab换一套漂亮的图标
上次讲了给jui(dwz)的菜单树换一套漂亮的图标,这次讲一下在点击菜单后,怎么把设置的漂亮图标带到navTab上去. 官方的navTab是这样显示的,除了默认的我的主页外,tab页上只有标题没有图标 ...
- 如何利用Apifox通过签名计算及数据加解密进行用户认证接口测试?
用户注册场景:输入签名数据signature,appId,13位时间戳timestamp,6位随机数nonce,merchantId(非必填,本次不填)的请求参数发送给服务器,服务器返回响应数值后,校 ...