tmux 终端效率提升 300% 的实战指南
说实话,我刚接触 tmux 的时候,是真的踩了一堆坑。那时候每次要在终端里切换项目,都得开七八个终端窗口,Ctrl+Tab 切得我手都酸了。
直到有一天,我看到同事用 tmux,一个屏幕搞定所有事情,我当时就震惊了。你知道吗?自从我用上 tmux,我的终端操作效率真的提升了至少 300%,这不是夸张。
什么是 tmux?为什么要用它?
tmux(Terminal Multiplexer)简单说就是终端复用器。它让你在一个终端窗口里运行多个会话,随时切换,随时断开重连。
举个真实例子:
- 以前:开 8 个终端窗口,切来切去,万一不小心关错一个,工作就白费了
- 现在:1 个 tmux 会话,4 个窗口,每个窗口再分 2-3 个窗格,一目了然
最绝的是,如果你是远程 SSH 连服务器,断网后再连,原来的工作环境全都在,这真的太爽了。
准备工作:安装和启动
安装 tmux
说实话,安装真的超级简单,一行命令就搞定了。
根据你的系统,选择对应的命令:
# Ubuntu 或 Debiansudo apt-get install tmux
# CentOS 或 Fedorasudo yum install tmux
# Mac(我用的就是这个)brew install tmux安装完之后,记得检查一下版本:
tmux --version为什么建议用 2.3 及以上版本? 老实讲,我一开始用老版本,踩了不少坑。新版本的特性更多,鼠标支持更稳定,bug 也少。我建议你直接用最新版,别折腾老版本。
启动 tmux
安装完成后,直接在终端输入:
tmux然后你会看到终端底部出现一个状态栏,左边是窗口信息(编号和名称),右边是系统信息。
这时候你就进入 tmux 会话了!是不是很简单?
第一次用的小提示:
- 底部状态栏会告诉你当前在哪个窗口(比如
1:zsh*) - 左边的数字是窗口编号,后面是窗口名称
- 星号
*表示这是当前窗口 - 按
Ctrl+b然后d可以退出但保留会话(别直接关终端窗口!)
第一步:开启鼠标支持(必做)
默认情况下,tmux 是不支持鼠标的,只能用快捷键。老实讲,刚开始用快捷键我崩溃了好几次。
开启鼠标支持其实很简单,在 ~/.tmux.conf 里添加一行就行:
# 开启鼠标支持set -g mouse on然后重新加载配置:
# 按 Ctrl+b(默认前缀),然后输入以下命令:source-file ~/.tmux.conf
# 或直接使用下面命令重载配置tmux source-file ~/.tmux.conf验证配置是否生效:
# 重新加载配置后,可以通过以下命令检查全局选项tmux show-options -g确保自定义设置已正确应用。
为什么必须开鼠标?
- 用鼠标点击窗格切换,比按方向键快 5 倍
- 直接拖拽调整窗格大小,不用记一堆快捷键
- 用鼠标滚轮查看历史输出,效率翻倍
第二步:常用配置(让你用起来更顺手)
以下是我自己用的配置,经过我 3 年的反复调优,真的特别好使:
# 修改前缀键为 Ctrl+a(更符合肌肉记忆)unbind C-bset -g prefix C-abind C-a send-prefix
# 状态栏样式(深色背景,绿色文字)set -g status-bg colour235set -g status-fg colour136set -g status-interval 5
# 窗口列表样式setw -g window-status-format "#[fg=green]#[bg=black] #I:#W "setw -g window-status-current-format "#[fg=black]#[bg=yellow] #I:#W "
# 开启 vi 模式(如果你会用 vim,这个很爽)setw -g mode-keys vi
# 开启鼠标支持set -g mouse on
# 复制模式使用系统剪贴板bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"配置要点说明:
Ctrl+a比Ctrl+b更顺手,因为小拇指离 a 更近- 黄色高亮当前窗口,一眼就能看到自己在哪个窗口
- vi 模式 + 系统剪贴板,复制粘贴效率提升 10 倍
第三步:常用命令和快捷键(记住这些就够了)
说实话,tmux 的快捷键特别多,但实际日常使用,记住下面这些就够了。
会话管理
| 操作 | 命令 | 说明 |
|---|---|---|
| 创建新会话 | tmux new -s session_name | 给会话起个名字,方便管理 |
| 列出会话 | tmux ls | 看看当前有哪些会话 |
| 附加到会话 | tmux attach -t session_name | 回到之前的会话 |
| 分离会话 | Ctrl+a 然后 d | 退出但保留会话 |
| 杀死会话 | tmux kill-session -t session_name | 彻底删除 |
窗口管理(每个会话可以开多个窗口)
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 新建窗口 | Ctrl+a 然后 c | create,创建新窗口 |
| 下一个窗口 | Ctrl+a 然后 n | next |
| 上一个窗口 | Ctrl+a 然后 p | previous |
| 重命名窗口 | Ctrl+a 然后 , | 给窗口起名字 |
| 关闭窗口 | Ctrl+a 然后 & | 退出当前窗口 |
窗格管理(一个窗口可以分割成多个区域)
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 水平分割 | Ctrl+a 然后 " | 上下分屏 |
| 垂直分割 | Ctrl+a 然后 % | 左右分屏 |
| 切换窗格 | Ctrl+a 然后 o | 自动切换到下一个 |
| 方向键切换 | Ctrl+a 然后 方向键 | 直接跳到指定方向 |
| 调整大小 | Ctrl+a 然后 Ctrl+方向键 | 拖拽调整窗格大小 |
| 关闭窗格 | Ctrl+a 然后 x | 关闭当前窗格 |
复制粘贴(这个真的太有用了)
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 进入复制模式 | Ctrl+a 然后 [ | 可以滚动查看历史输出 |
| 退出复制模式 | 按 q | 退出 |
| 开始选择 | 按空格 | 标记开始位置 |
| 复制文本 | 移动光标后按 y | 复制到系统剪贴板 |
第四步:用脚本一键创建工作环境(绝了)
这是我最喜欢 tmux 的地方!每次新项目开始,我都用脚本一键创建整个工作环境。
实战案例:我的前端开发环境
下面是我实际用的脚本,创建一个前端开发的标准布局:
#!/bin/bash
SESSION_NAME="my_project"
# 如果会话不存在,就创建一个if ! tmux has-session -t $SESSION_NAME 2>/dev/null; then # 创建会话,第一个窗口叫 editor tmux new-session -s $SESSION_NAME -n editor -d
# 在编辑器窗口里垂直分屏 tmux split-window -h -t $SESSION_NAME:1
# 左边窗格开 vim,右边窗格开 htop tmux send-keys -t $SESSION_NAME:1.1 'vim src/index.js' C-m tmux send-keys -t $SESSION_NAME:1.2 'htop' C-m
# 创建第二个窗口,运行开发服务器 tmux new-window -t $SESSION_NAME:2 -n server tmux send-keys -t $SESSION_NAME:2 'npm run dev' C-m
# 创建第三个窗口,查看日志 tmux new-window -t $SESSION_NAME:3 -n logs tmux split-window -v -t $SESSION_NAME:3 tmux send-keys -t $SESSION_NAME:3.1 'tail -f logs/app.log' C-m tmux send-keys -t $SESSION_NAME:3.2 'tail -f logs/error.log' C-m
# 回到第一个窗口 tmux select-window -t $SESSION_NAME:1fi
# 附加到会话tmux attach -t $SESSION_NAME这个脚本做了什么?
- 检查会话是否存在,避免重复创建
- 创建 3 个窗口:编辑器、服务器、日志
- 编辑器窗口分左右两屏,左边写代码,右边看系统状态
- 日志窗口分上下两屏,同时看应用日志和错误日志
- 全自动,运行脚本就能直接开始工作
通用模板(直接复制修改)
#!/bin/bash
SESSION_NAME="your_session_name"
if ! tmux has-session -t $SESSION_NAME 2>/dev/null; then # 创建会话并命名第一个窗口 tmux new-session -s $SESSION_NAME -n window1 -d
# 在窗口1中分割窗格 tmux split-window -h -t $SESSION_NAME:1 tmux split-window -v -t $SESSION_NAME:1.1 tmux select-layout -t $SESSION_NAME:1 tiled
# 在各个窗格中执行命令 tmux send-keys -t $SESSION_NAME:1.1 'command_for_pane1' C-m tmux send-keys -t $SESSION_NAME:1.2 'command_for_pane2' C-m tmux send-keys -t $SESSION_NAME:1.3 'command_for_pane3' C-m
# 创建其他窗口 tmux new-window -t $SESSION_NAME:2 -n window2 tmux send-keys -t $SESSION_NAME:2 'command_for_window2' C-m
# 返回到窗口1 tmux select-window -t $SESSION_NAME:1fi
tmux attach -t $SESSION_NAME常用脚本命令速查
| 操作 | 命令 | 说明 |
|---|---|---|
| 创建会话 | tmux new-session -s name -n win -d | -d 表示在后台创建 |
| 创建窗口 | tmux new-window -t session:2 -n win2 | 创建第2个窗口 |
| 水平分屏 | tmux split-window -h -t session:1.1 | -h 表示水平 |
| 垂直分屏 | tmux split-window -v -t session:1.2 | -v 表示垂直 |
| 选择布局 | tmux select-layout -t session:1 tiled | tiled 是平铺布局 |
| 发送命令 | tmux send-keys -t session:1.1 'cmd' C-m | C-m 表示回车 |
常用布局说明:
even-horizontal:窗格平均水平分布even-vertical:窗格平均垂直分布main-horizontal:一个大的在上,小的在下main-vertical:一个大的在左,小的在右tiled:所有窗格平铺(我最常用的)
回顾一下核心要点
我用 tmux 3 年了,总结下来真正重要的就这些:
- 安装最新版本:建议 2.3 及以上版本,鼠标支持更稳定,特性更多
- 开启鼠标支持:别折腾快捷键,用鼠标效率更高
- 配置好基础设置:Ctrl+a 前缀、vi 模式、状态栏样式
- 记住核心快捷键:创建窗口(c)、分屏(”/ %)、切换(n/p/o)
- 用脚本自动化:每个项目写个启动脚本,一键进入工作状态
现在就可以开始:
- 根据系统安装 tmux,检查版本是否是 2.3+
- 把鼠标支持配置加上
- 记住 5 个最常用的快捷键
- 为你当前项目写一个启动脚本
相信我,坚持用 tmux 一周,你会回不去原来那种开七八个终端窗口的方式的。我已经完全离不开它了,每次用别人的电脑没有 tmux,我都特别不习惯。
试试看吧,真的会打开新世界的大门!
推荐文章
基于标签匹配 · 智能推荐支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
喵斯基部落