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 复制
相关推荐
用户2330713074796 小时前
JUC 并发容器与工具
后端
威武的花瓣6 小时前
细说ASP.NET的各种异步操作
后端·asp.net·php
漂亮的摩托6 小时前
如何编写一个SpringBoot项目告警推送的Starter
java·spring boot·后端
AI-好学者6 小时前
MCP企业运用全面知识点-基础篇
服务器·开发语言·网络·人工智能·python·架构
任性的芝麻6 小时前
ASP.NET MVC 中的异步方式
后端·asp.net·mvc
ai生成式引擎优化技术7 小时前
WSaiOS:面向认知资产与工程化认知流程的智能操作系统架构
python·架构·django·virtualenv·pygame
雨师@7 小时前
go语言项目--实例化(图书管理)--006
开发语言·后端·golang
kuro-shiro7 小时前
SpringBoot 启动流程
java·spring boot·后端
大侠锅锅7 小时前
第 1 篇:开篇|物联网边缘计算的真实挑战与云边端架构全景
物联网·架构·边缘计算
国科安芯15 小时前
ASC4T245S分组双向控制架构深度解析:独立DIR/OE控制、QFN16封装与混合方向总线桥接
单片机·嵌入式硬件·物联网·fpga开发·架构·risc-v