tmux的使用
tmux的使用

Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是 Ctrl+b
,即先按下 Ctrl+b
,快捷键才会生效。
举例来说,帮助命令的快捷键是 Ctrl+b ?
。它的用法是,在 Tmux 窗口中,先按下 Ctrl+b
,再按下 ?
,就会显示帮助信息。
然后,按下 ESC
键或 q
键,就可以退出帮助。
3.1 新建会话
第一个启动的 Tmux 窗口,编号是 0,第二个窗口的编号是 1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。
使用编号区分会话,不太直观,更好的方法是为会话起名。
$ tmux new -s <session-name>
上面命令新建一个指定名称的会话。
3.2 分离会话
在 Tmux 窗口中,按下 Ctrl+b d
或者输入 tmux detach
命令,就会将当前会话与窗口分离。
$ tmux detach
上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。
tmux ls
命令可以查看当前所有的 Tmux 会话。
$ tmux ls
# or
$ tmux list-session
3.3 接入会话
tmux attach
命令用于重新接入某个已存在的会话。
# 使用会话编号
$ tmux attach -t 0
# 使用会话名称
$ tmux attach -t <session-name>
3.4 杀死会话
tmux kill-session
命令用于杀死某个会话。
# 使用会话编号
$ tmux kill-session -t 0
# 使用会话名称
$ tmux kill-session -t <session-name>
3.5 切换会话
tmux switch
命令用于切换会话。
# 使用会话编号
$ tmux switch -t 0
# 使用会话名称
$ tmux switch -t <session-name>
3.6 重命名会话
tmux rename-session
命令用于重命名会话。
$ tmux rename-session -t 0 <new-name>
上面命令将 0 号会话重命名。
3.7 会话快捷键
下面是一些会话相关的快捷键。
Ctrl+b d
:分离当前会话。Ctrl+b s
:列出所有会话。Ctrl+b $
:重命名当前会话。
四、最简操作流程
综上所述,以下是 Tmux 的最简操作流程。
- 新建会话
tmux new -s my_session
。 - 在 Tmux 窗口运行所需的程序。
- 按下快捷键
Ctrl+b d
将会话分离。 - 下次使用时,重新连接到会话
tmux attach-session -t my_session
。
五、窗格操作
Tmux 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmux
窗口中执行。
5.1 划分窗格
tmux split-window
命令用来划分窗格。
# 划分上下两个窗格
$ tmux split-window
# 划分左右两个窗格
$ tmux split-window -h
5.2 移动光标
tmux select-pane
命令用来移动光标位置。
# 光标切换到上方窗格
$ tmux select-pane -U
# 光标切换到下方窗格
$ tmux select-pane -D
# 光标切换到左边窗格
$ tmux select-pane -L
# 光标切换到右边窗格
$ tmux select-pane -R
5.3 交换窗格位置
tmux swap-pane
命令用来交换窗格位置。
# 当前窗格上移
$ tmux swap-pane -U
# 当前窗格下移
$ tmux swap-pane -D
# 当前窗格左移
$ tmux swap-pane -L
# 当前窗格左移
$ tmux swap-pane -R
5.4 窗格快捷键
下面是一些窗格操作的快捷键。
Ctrl+b %
:划分左右两个窗格。Ctrl+b "
:划分上下两个窗格。Ctrl+b <arrow key>
:光标切换到其他窗格。是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。Ctrl+b ;
:光标切换到上一个窗格。Ctrl+b o
:光标切换到下一个窗格。Ctrl+b {
:当前窗格左移。Ctrl+b }
:当前窗格右移。Ctrl+b Ctrl+o
:当前窗格上移。Ctrl+b Alt+o
:当前窗格下移。Ctrl+b x
:关闭当前窗格。Ctrl+b !
:将当前窗格拆分为一个独立窗口。Ctrl+b z
:当前窗格全屏显示,再使用一次会变回原来大小。Ctrl+b Ctrl+<arrow key>
:按箭头方向调整窗格大小。Ctrl+b q
:显示窗格编号。
六、窗口管理
除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口。
6.1 新建窗口
tmux new-window
命令用来创建新窗口。
$ tmux new-window
# 新建一个指定名称的窗口
$ tmux new-window -n <window-name>
6.2 切换窗口
tmux select-window
命令用来切换窗口。
# 切换到指定编号的窗口
$ tmux select-window -t <window-number>
# 切换到指定名称的窗口
$ tmux select-window -t <window-name>
6.3 重命名窗口
tmux rename-window
命令用于为当前窗口起名(或重命名)。
$ tmux rename-window <new-name>
6.4 窗口快捷键
下面是一些窗口操作的快捷键。
Ctrl+b c
:创建一个新窗口,状态栏会显示多个窗口的信息。Ctrl+b p
:切换到上一个窗口(按照状态栏上的顺序)。Ctrl+b n
:切换到下一个窗口。Ctrl+b <number>
:切换到指定编号的窗口,其中的是状态栏上的窗口编号。Ctrl+b w
:从列表中选择窗口。Ctrl+b ,
:窗口重命名。
下面是一些其他命令。
# 列出所有快捷键,及其对应的 Tmux 命令
$ tmux list-keys
# 列出所有 Tmux 命令及其参数
$ tmux list-commands
# 列出当前所有 Tmux 会话的信息
$ tmux info
# 重新加载当前的 Tmux 配置
$ tmux source-file ~/.tmux.conf
快捷键
Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b
,即先按下Ctrl+b
,快捷键才会生效。
系统操作
按键 |
含义 |
---|---|
? |
列出所有快捷键;按q返回 |
d |
脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话 |
D |
选择要脱离的会话;在同时开启了多个会话时使用 |
Ctrl+z |
挂起当前会话 |
r |
强制重绘未脱离的会话 |
s |
选择并切换会话;在同时开启了多个会话时使用 |
: |
进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器 |
[ |
进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出 |
~ |
列出提示信息缓存;其中包含了之前tmux返回的各种提示信息 |
$ |
重命名当前会话 |
窗口操作
按键 |
含义 |
---|---|
c |
创建一个新窗口,状态栏会显示多个窗口的信息 |
& |
关闭当前窗口 |
数字键 |
切换到指定编号的窗口,数字对应状态栏上的窗口编号 |
p |
切换至上一窗口 |
n |
切换至下一窗口 |
l |
在前后两个窗口间互相切换 |
w |
通过窗口列表切换窗口 |
, |
重命名当前窗口;这样便于识别 |
. |
修改当前窗口编号;相当于窗口重新排序 |
f |
在所有窗口中查找指定文本 |
窗格操作
按键 |
含义 |
---|---|
" |
将当前窗格平分为上下两块 |
% |
将当前窗格平分为左右两块 |
x |
关闭当前窗格 |
! |
将当前窗格置于新窗口;即新建一个窗口,其中仅包含当前窗格 |
Ctrl+方向键 |
以1个单元格为单位移动边缘以调整当前窗格大小 |
Alt+方向键 |
以5个单元格为单位移动边缘以调整当前窗格大小 |
Space |
在预置的窗格布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled |
q |
显示窗格编号 |
o |
在当前窗口中选择下一窗格 |
方向键 |
移动光标以选择窗格 |
{ |
当前窗格与上一个窗格交换位置 |
} |
当前窗格与下一个窗格交换位置 |
Alt+o |
逆时针旋转当前窗口的窗格,所有窗格向后移动一个位置,最后一个窗格变成第一个窗格 |
Ctrl+o |
顺时针旋转当前窗口的窗格,所有窗格向前移动一个位置,第一个窗格变成最后一个窗格 |
; |
光标切换到上一个窗格 |
o |
光标切换到下一个窗格 |
z |
当前窗格全屏显示,再使用一次会变回原来大小 |
静态编译 Tmux
最近开始使用 Tmux 之后,感觉还是在服务器上才能发挥出 Tmux 的价值。可惜的是公司的服务器上没有安装 Tmux,跳板机上我也只有普通用户权限,没法安装软件,于是我琢磨着从源码编译一个。
Tmux 唯一的依赖是 libevent,所以我需要先把它编译出来。之前我编译软件之后都是直接使用 root 权限,如今没有了 root 权限,安装软件都成了让我拙计的事情。
先从最近声名狼藉的 sourceforge 把 libevent 的源码包抓下来,然后从 Github 把 tmux 的源码包也抓下来。
wget -c https://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
wget -c https://github.com/tmux/tmux/releases/download/2.0/tmux-2.0.tar.gz
解压之后开始配置编译过程。当我们没有 root 权限的时候,编译之前就要设置软件的安装目录了。
./configure --prefix=~/libevent
make
make install
不同的软件编译配置不尽相同,但是作为一个约定, configire -h
总是能给出当前命令的帮助文档。
安装 libevent 到指定目录之后,可以开始编译 tmux。因为要让 tmux 的 configure 脚本找到 libevent,tmux 的安装命令稍显复杂。
./configure --prefix=~/tmux --enable-static CFLAGS=-I~/libevent/include LDFLAGS=-L~/libevent/lib
make
make install
CFLAGS 是 C 编译器参数,-I 后面带着需要引用的头文件的路径。LDFLAGS 是链接器的参数,-L后面带着库文件的路径。
与 libevent 的默认开启静态链接不同,配置 tmux 编译过程时需要显示开启静态链接,否则以后运行 tmux 的时候都需要在动态库目录中包含 libevent 的动态库。当然,静态链接之后的二进制文件会相应的大一些。
=================== End
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南