1. Tmux 使用指南(入门篇)

Tmux 使用指南

一、Tmux 简介

Tmux(Terminal Multiplexer)是一个终端复用工具,允许你:

  • 分屏操作:在一个终端窗口中创建多个窗格
  • 会话管理:保持后台运行的终端会话,即使断开连接
  • 窗口管理:在会话中创建多个窗口

核心概念

markdown 复制代码
Session(会话)
└── Window(窗口)
    └── Pane(窗格)

二、基础配置

配置文件位置:~/.tmux.conf

我的配置

bash 复制代码
# 基础设置
set -g mouse on                          # 鼠标支持
set -g history-limit 10000              # 历史行数
set -g base-index 1                     # 窗口编号从1开始
setw -g pane-base-index 1               # 窗格编号从1开始

# 前缀键改为 Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# 重载配置快捷键
bind r source-file ~/.tmux.conf \; display "Config reloaded!"

# 分屏快捷键优化
bind | split-window -h                  # 竖分屏
bind - split-window -v                  # 横分屏

# 调整窗格大小(Shift+方向键)
bind -n S-Left resize-pane -L 5
bind -n S-Right resize-pane -R 5
bind -n S-Up resize-pane -U 5
bind -n S-Down resize-pane -D 5

# Vi 风格复制模式
setw -g mode-keys vi

# 复制到系统剪贴板
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

# 状态栏美化
set -g status-style bg=black,fg=white
set -g status-left "#[fg=green]#S "
set -g status-right "#[fg=cyan]%Y-%m-%d %H:%M"

三、常用快捷键

前缀键:Ctrl+a(默认为 Ctrl+b)

会话管理

快捷键 说明
Ctrl+a d 分离当前会话(后台运行)
Ctrl+a s 列出所有会话
Ctrl+a $ 重命名会话
Ctrl+a ( 切换到上一个会话
Ctrl+a ) 切换到下一个会话

窗口管理

快捷键 说明
Ctrl+a c 创建新窗口
Ctrl+a n 切换到下一个窗口
Ctrl+a p 切换到上一个窗口
Ctrl+a 数字 切换到指定窗口
Ctrl+a , 重命名窗口
Ctrl+a & 关闭当前窗口
Ctrl+a w 显示窗口列表

窗格管理

快捷键 说明
`Ctrl+a `
Ctrl+a - 水平分屏
Ctrl+a 方向键 切换窗格
Ctrl+a x 关闭当前窗格
Ctrl+a z 最大化/还原窗格
Ctrl+a q 显示窗格编号
Ctrl+a o 切换到下一个窗格

调整窗格大小

快捷键 说明
Shift+Left 向左扩大窗格
Shift+Right 向右扩大窗格
Shift+Up 向上扩大窗格
Shift+Down 向下扩大窗格

复制模式(Vi 风格)

快捷键 说明
Ctrl+a [ 进入复制模式
v 开始选择文本
y 复制选中内容到系统剪贴板
q 退出复制模式
Ctrl+a ] 粘贴内容

四、命令行操作

会话管理

bash 复制代码
# 创建新会话
tmux new -s <会话名>

# 列出所有会话
tmux ls

# 连接到会话
tmux attach -t <会话名>
tmux a -t <会话名>

# 分离会话
tmux detach

# 终止会话
tmux kill-session -t <会话名>

# 终止所有会话
tmux kill-server

窗口和窗格

bash 复制代码
# 创建新窗口
tmux new-window -n <窗口名>

# 分屏
tmux split-window -h    # 垂直分屏
tmux split-window -v    # 水平分屏

# 发送命令到指定会话
tmux send-keys -t <会话名> "命令" Enter

五、自动化脚本示例

创建开发环境启动脚本 ~/dev-tmux.sh:

bash 复制代码
#!/bin/bash

# 项目开发环境自动启动脚本
PROJECT_NAME="myproject"

# 如果会话已存在则连接
tmux has-session -t $PROJECT_NAME 2>/dev/null
if [ $? -eq 0 ]; then
    tmux attach -t $PROJECT_NAME
    exit
fi

# 创建新会话
tmux new-session -d -s $PROJECT_NAME

# 创建第一个窗口 - 编辑器
tmux rename-window -t $PROJECT_NAME:0 'editor'
tmux send-keys -t $PROJECT_NAME:0 'cd ~/projects/'$PROJECT_NAME' && vim .' C-m

# 创建第二个窗口 - 服务器
tmux new-window -t $PROJECT_NAME:1 -n 'server'
tmux send-keys -t $PROJECT_NAME:1 'cd ~/projects/'$PROJECT_NAME' && npm run dev' C-m

# 创建第三个窗口 - Git
tmux new-window -t $PROJECT_NAME:2 -n 'git'
tmux send-keys -t $PROJECT_NAME:2 'cd ~/projects/'$PROJECT_NAME C-m

# 连接到会话
tmux attach -t $PROJECT_NAME

运行:chmod +x ~/dev-tmux.sh && ~/dev-tmux.sh

六、实用技巧

1. 同步窗格输入

在多个窗格中同时输入相同命令:

bash 复制代码
# 开启同步
Ctrl+a :setw synchronize-panes on

# 关闭同步
Ctrl+a :setw synchronize-panes off

2. 保存会话布局

使用 tmux-continuum 插件自动保存和恢复会话:

bash 复制代码
# 安装 TPM(Tmux Plugin Manager)
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

# 在 ~/.tmux.conf 中添加
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

# 按 Ctrl+a I 安装插件

3. 快速跳转窗口

bash 复制代码
# 模糊搜索窗口
Ctrl+a f

# 模糊搜索会话
Ctrl+a s

七、常见问题

Q: 复制到系统剪贴板不生效?

确保已安装 xclip:

bash 复制代码
sudo apt install xclip

Q: 鼠标选择文本时自动退出复制模式?

配置已添加 MouseDragEnd1Pane 绑定,鼠标选择后自动复制到系统剪贴板。

Q: 如何让新窗口保持当前目录?

在 ~/.tmux.conf 添加:

bash 复制代码
bind c new-window -c "#{pane_current_path}"

八、插件推荐

插件 功能
tmux-resurrect 保存/恢复会话
tmux-continuum 自动保存会话
tmux-yank 增强剪贴板支持
tmux-prefix-highlight 前缀键状态提示
tmux-fzf 模糊搜索

总结

Tmux 是提升终端效率的利器,关键快捷键速记:

  • 会话 :Ctrl+a d 分离,tmux a -t name 连接
  • 窗口 :Ctrl+a c 新建,Ctrl+a n/p 切换
  • 窗格 :Ctrl+a \|/- 分屏,Ctrl+a 方向键 切换
  • 复制 :Ctrl+a [ 进入,v 选择,y 复制
相关推荐
天空属于哈夫克33 天前
企业微信二次开发:精准实现关键词自动回复
架构·企业微信
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
晨米酱3 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
大勇前进3 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
yuzhi_liu3 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile3 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go