当前位置: 首页 > news >正文

我的tmux日常使用

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}
http://www.rkmt.cn/news/1410069.html

相关文章:

  • 智能驾驶的“眼睛”:车辆检测技术全景解读与实战指南
  • Cartographer无里程计建图实战:室内外效果对比与参数调优心得
  • 面试高频:Spring AI 统一聊天入口怎么设计,这次把路由和降级讲具体
  • LightRAG 入门指南:手把手教你用图增强 RAG 系统
  • 别再拍脑袋定样本量了!用Excel手把手教你搞定市场调研问卷的样本容量(附置信区间计算模板)
  • Hi3559A BT.1120接口调试避坑实录:从时钟配置到VI DEV绑定的完整流程
  • Java 做 AI 提取任务时,为什么我更建议先想好结构化输出
  • 把 ZipVoice 从 onnxruntime 移植到 MNN —— 7 个让人怀疑人生的细节
  • 第5篇_PUBLISH不是收到就转发_Broker怎么处理QoS_PacketId和多客户端fanout
  • Grok生成的pdf怎么导出 “AI导出鸭”不会搞算我输!
  • ChatGPT饮食建议生成器上线倒计时:最后48小时必须完成的3项合规改造(GDPR+《互联网诊疗监管办法》双达标清单)
  • 告别CH340!用ESP32-S3的USB CDC功能实现零成本串口打印与调试(ESP-IDF 4.4环境)
  • Zed Git Panel 新特性:在编辑器里直接看提交历史,真香
  • 可视挖耳勺多少像素够用?可视耳勺好用吗?可视耳勺使用方法
  • CH582低功耗调试踩坑记:从1.2mA降到5uA,我都改了哪些IO配置?
  • 从玩具车到无人机:用OpenCV C++双目测距项目实战智能避障(附完整源码)
  • 从Wi-Fi信号到手机充电:用Python和Matplotlib可视化麦克斯韦方程组(附代码)
  • 别再只用disp了!Matlab里fprintf格式化输出实战,从%f到%f\n的保姆级指南
  • OpenClaw用户如何配置Taotoken作为其AI供应商并快速开始
  • 保姆级教程:用Cartographer融合思岚S1雷达与Tobotics IMU,解决纯激光建图漂移问题
  • 第 3 篇:把 MCP 接入 AI,以及生态里有什么
  • 空间滞后误差模型SAC怎么做:SPSSAU操作与结果解读
  • 【ChatGPT】电子束光刻机EBL 深度拆解、爆炸图10张、信息图10张、下位机C++、上位机C#、PLC代码框架
  • Louvain算法实战:用NetworkX和Python分析你的社交网络好友圈子
  • 如何0基础搭建Shopify分销系统
  • 别再只盯着TX时钟了!手把手教你用FPGA的RXOUTCLK(线路恢复时钟)驱动你的接收端
  • 【MATLAB】二自由度机械臂参数辨识与自适应滑模控制仿真研究
  • QT6构建使用OpenCV(MinGW版)
  • ProxySQL选型实战:从手写读写分离到中间件的踩坑全记录
  • AI智能体培训后可以做什么工作?这7个方向值得关注