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 复制
相关推荐
XovH10 小时前
Django 从 0 到 1 打造完整电商平台:商品详情页与图片展示
后端
Larcher10 小时前
新手入门:从前端三件套到动态数据渲染
前端·后端·代码规范
程序员老邢10 小时前
《技术底稿 41》从三机混跑到四机隔离:微服务集群环境拆分实战复盘
微服务·云原生·架构·devops·服务器运维·技术底稿·环境隔离
胡萝卜术10 小时前
从“用户管理”全栈项目深挖模块化、RESTful 与语义化之道
前端·后端
用户2986985301410 小时前
告别手动复制:Java 拆分 Word 文档的两种实用方案
java·后端
Determined_man10 小时前
Spring 事务原子性问题排查与修复
后端
GuWenyue10 小时前
从零搭建用户管理系统!60分钟搞定RESTful接口+Bootstrap语义化首页
前端·后端
Re_zero10 小时前
从乐观锁被冲烂到原子扣减稳如磐石:高并发防超卖方案的三次迭代
java·后端
pixcarp10 小时前
Redis ZSet:底层设计与实践
数据库·redis·后端·学习·golang·web