返回资讯中心
外部精选
软件工程
#开发者实时流

Tmux 3.7 引入浮动窗格,3.8 起支持鼠标拖动调整

来源标题:Tmux Floating Panes (v3.7)

tmux 3.7 新增浮动窗格功能,窗格可悬浮于现有布局之上且关闭时不打乱原布局。用户可用 tmux new-pane 创建浮动窗格(默认绑定 Ctrl+b *),3.8 版本新增 Ctrl+b @ 切换浮动与平铺,并默认开启鼠标模式以支持拖动和缩放。3.2 至 3.6 版本用户可用 display-popup 作为近似替代,但该弹窗为模态窗口。

Hacker News 最新mmh00002026/11/14 · 今天22 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Tmux 浮动窗格(v3.7+)

Tmux Cheat Sheet 切换导航 首页安装 TmuxInstall TmuxTmux on Windows主题与自定义浮动窗格浮动窗格Tmux 命令Tmux 会话附加与分离配置生成器插件与工具Claude CodeClaude CodeHerdrOpenClaw + Tmuxtmux vs herdrtmux vs herdrtmux vs cmux提交速查表

Tmux 浮动窗格(v3.7+) facebook xredditlinkedintumblrWhatsapp 二维码扫码访问 l9c 2026年11月2日 · 编辑于2026年11月8日

TL;DR — tmux 可以把窗格浮动在布局之上:tmux new-pane 可打开一个浮动窗格(绑定到 Ctrl+b *),Ctrl+b @(3.8)在浮动与平铺之间切换,鼠标拖拽可移动和调整浮动窗格大小(在 tmux 3.7 上,需先用 set -g mouse on 启用鼠标模式;3.8 默认启用)。在 tmux 3.2–3.6 上,display-popup 是最接近的替代方案(不过弹出层是模态的)。

浮动窗格改变了什么 在 3.7 之前,每个窗格都共享窗口网格——缩放(Ctrl+b z)是最接近“变大”的功能。浮动窗格悬浮在网格之上,拥有自己带边框的盒子,不触碰底层布局,关闭时也不会重新排列任何东西。非常适合临时工作:一个草稿 shell 或日志跟踪。3.7 引入时,移动和调整大小仅限于鼠标操作;到 3.8 浮动窗格变得完全可脚本化:move-pane 和 resize-pane 接受它们,浮动窗格内的 split-window 会生成相邻的浮动窗格,swap-pane 可用,Ctrl+b g 键表可在窗口内快速吸附浮动窗格。

基本用法

打开一个运行你 shell 的浮动窗格

默认大小:窗口宽度的一半,高度的四分之一

tmux new-pane

在其中运行命令

tmux new-pane -d 'tail -f /var/log/app.log'

用 -x/-y 设置大小,用 -X/-Y 定位左上角(% 可用)

tmux new-pane -x 60% -y 40% -X 20% -Y 25%

像任何窗格一样关闭它:Ctrl+b x

入门默认绑定:按键操作Ctrl+b *打开新的浮动窗格Ctrl+b @在浮动与平铺之间切换窗格Ctrl+b g移动和调整大小表:角落、边缘和四分之一区域拖拽侧边、底边框或角落调整浮动窗格大小拖拽顶边框移动浮动窗格Alt+拖拽任意位置移动浮动窗格Ctrl+拖拽窗格内(3.8)创建与拖拽大小相符的浮动窗格

鼠标模式。上述拖拽手势需要 tmux 的鼠标选项。tmux 3.7 引入浮动窗格时鼠标仍默认关闭,因此在使用前需在 ~/.tmux.conf 中添加 set -g mouse on(或运行 tmux set-option -g mouse on)。tmux 3.8 将默认值翻转为开启,因此那里无需设置;用 tmux show-options -g mouse 检查你的设置。鼠标模式关闭时 tmux 不运行任何鼠标绑定,因此边框拖拽、Alt+拖拽、Ctrl+拖拽和点击选择都不起作用。

移动、调整大小与堆叠 Ctrl+b g 进入浮动窗格的移动表:1–4 吸附到角落,方向键将浮动窗格居中到某条边缘,M+1–4 吸附并调整大小为窗口的四分之一,M+方向键吸附并调整大小为高度或宽度的一半(另一方向为全跨度),0 填满整个窗口。对于脚本和绑定,命令是:# 吸附到边缘、角落或中心 tmux move-pane -P bottom-centre

将浮动窗格堆叠在一起(z-index,0 为最前)

tmux move-pane -z 1

调整大小:在浮动窗格上,上/下/左/右增量针对边框

tmux resize-pane -U 3

或设置绝对大小

tmux resize-pane -x 80% -y 75%

move-pane 的定位选项(-D/-L/-P/-R/-U/-X/-Y/-z)仅适用于浮动窗格:对平铺窗格运行会得到 pane is not floating——用 -t 指向一个浮动窗格。裸 move-pane 仍像 join-pane 一样工作。resize-pane 也正常调整平铺窗格大小;只有在浮动窗格上其增量才针对边框,且那里也接受负值(resize-pane -U -3 从顶部收缩窗格)。move-pane 还接受绝对位置(-X/-Y)和命名位置如 -P front 或 -P backward 来重新排列浮动窗格。相关选项:pane-border-status 接受 top-floating/bottom-floating 以仅在浮动窗格上显示边框标题,pane-border-lines none 不绘制边框线。两者都是窗口和窗格选项:set-option -w 将其应用于窗口中的所有窗格(或 set -g 应用于每个窗口),set-option -p 覆盖单个窗格:tmux set-option -w pane-border-status top-floating # 仅在浮动窗格上显示边框标题 tmux set-option -w pane-border-lines none # 无边框线

重要的脚本标志 new-pane 镜像 split-window 的选项并添加一些自己的(-A、-L、-M、-O/-K/-C/-D,以及浮动几何 -x/-y/-X/-Y)。-T(标题)和 -B(边框线)在 3.8 中与 split-window 共享。new-pane -L 使 new-pane 创建平铺拆分而非浮动窗格;指向浮动窗格时会失败并提示 can't split a floating pane,而普通 split-window 会创建相邻的浮动窗格:tmux new-pane -T 'scratch' # 设置窗格标题 tmux new-pane -B heavy # 边框线字符 tmux new-pane -A # 保持浮动窗格在缩放窗格之上可见 tmux new-pane -W 'vi afile' # 阻塞直到命令退出,返回其退出状态 tmux new-pane -k 'make' # 命令退出后保持窗格打开,直到按键 tmux new-pane -E # 空窗格,其中不运行任何东西

-I 创建空窗格并将 stdin 转发到其中

printf 'hello\n' | tmux new-pane -dI tmux new-pane -M # 仅鼠标绑定:跟随拖拽

当当前窗格浮动时,#{pane_floating_flag} 格式为 1,因此绑定可以据此分支——例如 if-shell -F '#{pane_floating_flag}' 'join-pane' 'break-pane -W'。new-pane -O 创建模态浮动窗格——打开时始终活跃并阻塞其他窗格,与缓冲区模式的编辑器现在使用的机制相同。模态浮动窗格也会自行保持在缩放窗格之上——你不需要为此使用 -A:# 所有按键,包括前缀键,都发送给它;Esc 或 C-c 关闭它 tmux new-pane -O -K -D

或在其外部点击鼠标时关闭它

tmux new-pane -O -C

模式也可以存在于浮动窗格中:choose-tree -h 隐藏持有该模式的浮动窗格,-k 在模式退出时杀死该浮动窗格:bind s 'new-pane -x50% -y50% -E; choose-tree -hks'

三个值得借鉴的配方

  1. 草稿终端——用于快速一次性命令的浮动窗格,尺寸给得慷慨些:bind S new-pane -x 80% -y 75%

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →