tmux

终端复用器 - 持久会话、分割窗格、断开重连,远程工作必备

TL;DR

是什么:用于管理多个终端会话的终端复用器。

为什么用:持久会话、分割窗格、分离/附加、远程工作必备。

Quick Start

安装

# macOS
brew install tmux

# Ubuntu/Debian
sudo apt install tmux

# 启动
tmux

基本用法

tmux new -s mysession   # 新建命名会话
tmux attach -t mysession # 附加到会话
tmux ls                 # 列出会话

Cheatsheet

所有命令先按前缀 Ctrl+b,然后:

按键动作
c新建窗口
n / p下一个/上一个窗口
%垂直分割
"水平分割
方向键在窗格间移动
d分离会话
x关闭窗格
z切换窗格缩放

Gotchas

会话管理

# 创建命名会话
tmux new -s dev

# 分离(在 tmux 内)
Ctrl+b d

# 列出会话
tmux ls

# 附加到会话
tmux attach -t dev

# 关闭会话
tmux kill-session -t dev

# 重命名会话
Ctrl+b $

窗口

# 新建窗口
Ctrl+b c

# 切换窗口
Ctrl+b 0   # 窗口 0
Ctrl+b 1   # 窗口 1
Ctrl+b n   # 下一个
Ctrl+b p   # 上一个

# 重命名窗口
Ctrl+b ,

# 关闭窗口
Ctrl+b &

# 列出窗口
Ctrl+b w

窗格

# 分割窗格
Ctrl+b %   # 垂直
Ctrl+b "   # 水平

# 导航窗格
Ctrl+b 方向键

# 调整窗格大小
Ctrl+b Ctrl+方向键

# 缩放窗格(切换全屏)
Ctrl+b z

# 关闭窗格
Ctrl+b x

# 移动窗格
Ctrl+b {   # 向左移动
Ctrl+b }   # 向右移动

配置(~/.tmux.conf)

# 启用鼠标
set -g mouse on

# 窗口从 1 开始
set -g base-index 1
setw -g pane-base-index 1

# 更好的前缀
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# 简单分割快捷键
bind | split-window -h
bind - split-window -v

# Vim 风格窗格导航
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# 重载配置
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# 状态栏
set -g status-style bg=black,fg=white
set -g status-left "[#S] "

复制模式

# 进入复制模式
Ctrl+b [

# 导航(vim 按键)
hjkl, Ctrl+u, Ctrl+d

# 开始选择
Space

# 复制选择
Enter

# 粘贴
Ctrl+b ]

Next Steps