快速重拾 Tmux
Tmux
是一个 Linux (Mac OS 也支持)下的终端复用器,相较于 Screen
更为强大,但快捷键和操作逻辑也更复杂,一段时间不用,就很容易忘记相关的命令和快捷键。本文旨在通过一个简单的场景,快速重拾 Tmux
Tmux
通常用来保持会话(session),如果我们通过 ssh 连接服务器处理打包等的耗时操作,那么网络波动可能会导致连接断开,使得操作失败,使用 Tmux
会话会被保持,任务依然会继续,我们可以随时恢复会话
Tmux
另一个常用的功能是分屏,快速地创建 Window
和 Pane
,方便地在不同的任务间穿梭
修改配置
重新加载 Tmux 配置文件
命令 & 快捷键
命令
这些命令大多是用于 tmux Session 的增删改查,一些命令进入 tmux 后将无法使用
可以定义一些 alias 简化输入
快捷键
在使用下面的快捷键之前,都需要先按 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
我们可以使用
prefix + ,
将 Windows 名称修改为hello-world
使用 vim 编辑 hello.c
按 i
进入 vim 的编辑模式,输入:
按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,完成编译和运行
使用
prefix + x
,关闭右侧 Pane,按y
确认关闭使用
prefix + d
(tmux detach),将当前会话与窗口分离,回到我们自己的 Shell使用
tmux attach
(修改了配置则可以使用tatt
),回到我们刚出 detach 的 Session
版权声明: 本文为 InfoQ 作者【高端章鱼哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/6c9966be1ca335b0482142348】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论