2297 字
11 分钟

tmux 终端效率提升 300% 的实战指南

说实话,我刚接触 tmux 的时候,是真的踩了一堆坑。那时候每次要在终端里切换项目,都得开七八个终端窗口,Ctrl+Tab 切得我手都酸了。

直到有一天,我看到同事用 tmux,一个屏幕搞定所有事情,我当时就震惊了。你知道吗?自从我用上 tmux,我的终端操作效率真的提升了至少 300%,这不是夸张。

什么是 tmux?为什么要用它?#

tmux(Terminal Multiplexer)简单说就是终端复用器。它让你在一个终端窗口里运行多个会话,随时切换,随时断开重连。

举个真实例子:

  • 以前:开 8 个终端窗口,切来切去,万一不小心关错一个,工作就白费了
  • 现在:1 个 tmux 会话,4 个窗口,每个窗口再分 2-3 个窗格,一目了然

最绝的是,如果你是远程 SSH 连服务器,断网后再连,原来的工作环境全都在,这真的太爽了。

准备工作:安装和启动#

安装 tmux#

说实话,安装真的超级简单,一行命令就搞定了。

根据你的系统,选择对应的命令:

Terminal window
# Ubuntu 或 Debian
sudo apt-get install tmux
# CentOS 或 Fedora
sudo yum install tmux
# Mac(我用的就是这个)
brew install tmux

安装完之后,记得检查一下版本:

Terminal window
tmux --version

为什么建议用 2.3 及以上版本? 老实讲,我一开始用老版本,踩了不少坑。新版本的特性更多,鼠标支持更稳定,bug 也少。我建议你直接用最新版,别折腾老版本。

启动 tmux#

安装完成后,直接在终端输入:

Terminal window
tmux

然后你会看到终端底部出现一个状态栏,左边是窗口信息(编号和名称),右边是系统信息。

这时候你就进入 tmux 会话了!是不是很简单?

第一次用的小提示:

  • 底部状态栏会告诉你当前在哪个窗口(比如 1:zsh*
  • 左边的数字是窗口编号,后面是窗口名称
  • 星号 * 表示这是当前窗口
  • Ctrl+b 然后 d 可以退出但保留会话(别直接关终端窗口!)

第一步:开启鼠标支持(必做)#

默认情况下,tmux 是不支持鼠标的,只能用快捷键。老实讲,刚开始用快捷键我崩溃了好几次。

开启鼠标支持其实很简单,在 ~/.tmux.conf 里添加一行就行:

Terminal window
# 开启鼠标支持
set -g mouse on

然后重新加载配置:

Terminal window
# 按 Ctrl+b(默认前缀),然后输入以下命令
:source-file ~/.tmux.conf
# 或直接使用下面命令重载配置
tmux source-file ~/.tmux.conf

验证配置是否生效:

# 重新加载配置后,可以通过以下命令检查全局选项
tmux show-options -g

确保自定义设置已正确应用。

为什么必须开鼠标?

  • 用鼠标点击窗格切换,比按方向键快 5 倍
  • 直接拖拽调整窗格大小,不用记一堆快捷键
  • 用鼠标滚轮查看历史输出,效率翻倍

第二步:常用配置(让你用起来更顺手)#

以下是我自己用的配置,经过我 3 年的反复调优,真的特别好使:

Terminal window
# 修改前缀键为 Ctrl+a(更符合肌肉记忆)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 状态栏样式(深色背景,绿色文字)
set -g status-bg colour235
set -g status-fg colour136
set -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+aCtrl+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 然后 ccreate,创建新窗口
下一个窗口Ctrl+a 然后 nnext
上一个窗口Ctrl+a 然后 pprevious
重命名窗口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:1
fi
# 附加到会话
tmux attach -t $SESSION_NAME

这个脚本做了什么?

  1. 检查会话是否存在,避免重复创建
  2. 创建 3 个窗口:编辑器、服务器、日志
  3. 编辑器窗口分左右两屏,左边写代码,右边看系统状态
  4. 日志窗口分上下两屏,同时看应用日志和错误日志
  5. 全自动,运行脚本就能直接开始工作

通用模板(直接复制修改)#

#!/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:1
fi
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 tiledtiled 是平铺布局
发送命令tmux send-keys -t session:1.1 'cmd' C-mC-m 表示回车

常用布局说明:

  • even-horizontal:窗格平均水平分布
  • even-vertical:窗格平均垂直分布
  • main-horizontal:一个大的在上,小的在下
  • main-vertical:一个大的在左,小的在右
  • tiled:所有窗格平铺(我最常用的)

回顾一下核心要点#

我用 tmux 3 年了,总结下来真正重要的就这些:

  1. 安装最新版本:建议 2.3 及以上版本,鼠标支持更稳定,特性更多
  2. 开启鼠标支持:别折腾快捷键,用鼠标效率更高
  3. 配置好基础设置:Ctrl+a 前缀、vi 模式、状态栏样式
  4. 记住核心快捷键:创建窗口(c)、分屏(”/ %)、切换(n/p/o)
  5. 用脚本自动化:每个项目写个启动脚本,一键进入工作状态

现在就可以开始:

  • 根据系统安装 tmux,检查版本是否是 2.3+
  • 把鼠标支持配置加上
  • 记住 5 个最常用的快捷键
  • 为你当前项目写一个启动脚本

相信我,坚持用 tmux 一周,你会回不去原来那种开七八个终端窗口的方式的。我已经完全离不开它了,每次用别人的电脑没有 tmux,我都特别不习惯。

试试看吧,真的会打开新世界的大门!

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
tmux 终端效率提升 300% 的实战指南
https://blog.moewah.com/posts/tmux-terminal-efficiency-boost-300/
作者
GoWah
发布于
2025-04-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
GoWah
Hello, I'm GoWah.
分类
标签
站点统计
文章
160
分类
9
标签
350
总字数
301,106
运行时长
0
最后活动
0 天前

目录