Tmux 使用笔记前言最近我claude code 写代码比较多电脑资源占用也紧张遂尝试 TUI界面目前 kitty tmux lazyvim之所以选择tmux 而不选择 zellij 因为tmux 更稳定。之前了解过因为和kitty 的windowtab 功能重复所以一直没有尝试最近看有人推荐花了两天强制使用了下真的很好用感觉比kitty 的layout 管理更好用。还有就是感谢 ai有了ai 使用新东西就是快一、核心概念1.1 三层结构Tmux 采用三层模型组织终端Session会话 └─ Window 1窗口 ├─ Pane 1面板 └─ Pane 2 └─ Window 2 └─ Pane 1概念说明类比Session独立工作环境断开后任务继续运行一个完整工作区Window会话内的标签页浏览器标签Pane窗口内的分割区域分屏1.2 与 Kitty 的对照用习惯tmux 后kitty 的没必要了解了Kitty 的层级是OS Window → Kitty Tab → Kitty Window与 tmux 的 Session/Window/Pane 概念相近但不等价。二、配置文件~/.tmux.conf2.1 设置前缀键为Ctrlg# 改前缀键为 Ctrlg set -g prefix C-g unbind C-b # 连按两次 Ctrlg 透传到内部程序如 Neovim bind C-g send-prefix # Vim 风格 Pane 切换 bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R set -g base-index 1 setw -g pane-base-index 12.2 配置热加载tmux 外部tmux source-file ~/.tmux.conftmux 内部Prefix :然后输入source-file ~/.tmux.conf三、快捷键速查Prefix Ctrlg3.1 通用操作快捷键作用Prefix ?查看所有快捷键Prefix :进入命令行模式Prefix d断开 sessiondetach进程继续运行3.2 Session 管理命令行操作tmuxls# 列出所有 sessiontmux a-tname# 接入指定 sessionattach 简写tmux kill-session-tname# 从外部关闭 session会话内切换快捷键作用Prefix s交互式 session 列表树状 预览推荐Prefix L跳回上一个 session项目间反复横跳高效Prefix :→kill-session非 detach 直接关闭当前 sessionPrefix s→kill-sessionx 关闭sessionPrefix $rename session3.3 Window 管理快捷键作用Prefix c新建 windowPrefix 关闭当前 windowPrefix ,rename当前 windowPrefix n/p下一个 / 上一个 windowPrefix 0~9跳到指定编号 windowPrefix l跳回上一次活跃的 windowPrefix w交互式列出所有 session 与 window推荐3.4 Pane 管理创建与关闭快捷键作用Prefix %左右分割Prefix 上下分割Prefix x关闭当前 panePrefix Space循环切换布局导航快捷键作用Prefix h/j/k/lVim 风格方向切换需配置Prefix ↑↓←→方向键切换相邻 panePrefix o顺时针循环切换Prefix ;跳回上一个 pane编辑器/命令行往返高效Prefix q显示 pane 编号按数字直接跳转4. 配置文件# 1. 改前缀键为 Ctrlg set -g prefix C-g unbind C-b bind C-g send-prefix # 开启支持鼠标 set -g mouse on # 窗口名固定 set -g automatic-rename off set -g allow-rename off # copy-mode 选区高亮 # reverse 把当前单元格 fg/bg 互换永远是最大对比bold 加强可读性 set -g mode-style reverse,bold # 1. 确保开启了 vi 模式 set-window-option -g mode-keys vi # scrollback mode start # 2. 在 copy-mode-vi 中配置类 Neovim 的半屏滚动 # -X 表示执行 tmux 命令 # halfpage-up 和 halfpage-down 是 tmux 内置的滚动指令 bind-key -T copy-mode-vi C-u send-keys -X halfpage-up bind-key -T copy-mode-vi C-d send-keys -X halfpage-down # 3. j 和 k 默认就是行滚动但如果你想确保它们更灵敏 bind-key -T copy-mode-vi j send-keys -X cursor-down bind-key -T copy-mode-vi k send-keys -X cursor-up # scrollback mode end # 1. 绑定 v 开始选择 (Visual 模式) bind-key -T copy-mode-vi v send-keys -X begin-selection # 2. y 复制 → 由 tmux-yank 接管跨平台自动探测剪贴板工具 OSC 52 # Vim 风格 Pane 切换 bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R # 放行终端控制序列OSC 52远程剪贴板回流、kitty graphics/keyboard 协议 set -g allow-passthrough on # 开启 OSC 52SSH 远程剪贴板回流必备 set -s set-clipboard on set-option -g update-environment KITTY_PID KITTY_WINDOW_ID # Plugins set -g plugin tmux-plugins/tpm set -g plugin tmux-plugins/tmux-sensible set -g plugin tmux-plugins/tmux-resurrect set -g plugin tmux-plugins/tmux-continuum set -g plugin tmux-plugins/tmux-yank set -g plugin omerxx/tmux-floax set -g plugin catppuccin/tmux#v2.1.3 # tmux-floax浮动 pane set -g floax-bind f # Prefix f 唤起/隐藏浮窗避开默认 p 与 previous-window 冲突 set -g floax-width 80% set -g floax-height 80% set -g floax-border-color magenta set -g floax-text-color blue set -g floax-change-path true # 浮窗继承当前 pane 的 pwd # tmux-yank set -g yank_selection clipboard # 默认目标系统剪贴板 set -g yank_selection_mouse clipboard # 鼠标选中也写剪贴板 set -g yank_action copy-pipe # 复制后保持 copy-mode继续选/搜 # Catppuccin 主题 set -g catppuccin_flavor mocha # latte / frappe / macchiato / mocha set -g catppuccin_window_status_style rounded # 状态栏显示手动设定的 window name (#W)而不是默认的 pane title (#T) set -g catppuccin_window_text #{?window_zoomed_flag,[Z] ,}#W set -g catppuccin_window_current_text #{?window_zoomed_flag,[Z] ,}#W # 状态栏左空右copy-mode 徽章 应用 session 时间 set -g status-right-length 100 set -g status-left-length 100 set -g status-left # 进 copy-mode 时左侧弹出红底徽章非 copy-mode 不占位 set -g status-right #{?pane_in_mode,#[bg#f38ba8 fg#1e1e2e bold] [C] COPY #[default] ,}#{E:catppuccin_status_application} # 模式切换时立刻刷新状态栏不等 status-interval set-hook -g pane-mode-changed refresh-client -S set -g status-interval 1 set -agF status-right #{E:catppuccin_status_session} set -agF status-right #{E:catppuccin_status_date_time} set -g catppuccin_date_time_text %Y-%m-%d %H:%M # resurrect: 恢复时也恢复 neovim session(可选,需 lazyvim 配 persistence) set -g resurrect-strategy-nvim session # continuum: 自动保存间隔(分钟),默认 15 set -g continuum-restore on # tmux 启动时自动恢复 set -g continuum-save-interval 15 # 必须放最后一行 run ~/.tmux/plugins/tpm/tpm # 覆盖 catppuccin 的边框样式必须在 tpm 之后否则被插件覆盖 # 进 copy-mode 的 pane 边框变红加粗多 pane 时一眼锁定 set -g pane-active-border-style #{?pane_in_mode,fg#f38ba8 bold,fg#b4befe}