.tmux.conf 配置文件如下。
# ============================================================
# tmux 常用配置 - 適合日常開發(fā)
# ============================================================
# -------------------- 基礎(chǔ)設(shè)置 --------------------
# 前綴鍵改為 Ctrl+a(比默認(rèn) Ctrl+b 更順手)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 啟用鼠標(biāo)支持(滾輪、點(diǎn)擊窗格、拖拽調(diào)整大?。?set -g mouse on
# 增加滾動(dòng)歷史緩沖區(qū)
set -g history-limit 50000
# 減少按鍵延遲(vim 用戶必配)
set -sg escape-time 0
# 讓窗口編號(hào)從 1 開始
set -g base-index 1
setw -g pane-base-index 1
# 關(guān)閉中間窗口后自動(dòng)重新編號(hào)
set -g renumber-windows on
# 支持 256 色和真彩色
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
# 系統(tǒng)剪貼板支持(需要 xclip 或 xsel)
# 選中后復(fù)制到系統(tǒng)剪貼板
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
# 鼠標(biāo)選中后也復(fù)制到系統(tǒng)剪貼板
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
# -------------------- 分屏快捷鍵 --------------------
# 更直觀的分屏快捷鍵(| 豎分,- 橫分,符號(hào)和方向一致)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# 新建窗口也保持當(dāng)前路徑
bind c new-window -c "#{pane_current_path}"
# -------------------- 窗格導(dǎo)航 --------------------
# Vim 風(fēng)格窗格切換(無需前綴鍵)
bind -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R
# Vim 風(fēng)格調(diào)整窗格大?。◣熬Y鍵 + H/J/K/L)
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# -------------------- 復(fù)制模式 --------------------
# vi 風(fēng)格的復(fù)制模式
setw -g mode-keys vi
# Enter 復(fù)制模式
bind Enter copy-mode
# v 開始選擇(vim 習(xí)慣)
bind-key -T copy-mode-vi v send-keys -X begin-selection
# -------------------- 實(shí)用快捷鍵 --------------------
# 快速重載配置
bind r source-file ~/.tmux.conf \; display-message "tmux config reloaded!"
# 快速交換窗格位置
bind > swap-pane -D
bind < swap-pane -U
# 快速跳轉(zhuǎn)到指定窗口(帶前綴鍵 + 數(shù)字)
bind 1 select-window -t :1
bind 2 select-window -t :2
bind 3 select-window -t :3
bind 4 select-window -t :4
bind 5 select-window -t :5
bind 6 select-window -t :6
bind 7 select-window -t :7
bind 8 select-window -t :8
bind 9 select-window -t :9
# 同步輸入到所有窗格(批量操作多臺(tái)服務(wù)器時(shí)超有用)
bind S setw synchronize-panes
# -------------------- 狀態(tài)欄美化 --------------------
# 狀態(tài)欄顏色(Tokyo Night 風(fēng)格)
set -g status-style "bg=#1a1b26,fg=#a9b1d6"
# 活動(dòng)窗口高亮
setw -g window-status-current-style "bg=#7aa2f7,fg=#1a1b26,bold"
setw -g window-status-current-format " #I:#W "
# 非活動(dòng)窗口
setw -g window-status-format " #I:#W "
# 窗格邊框
set -g pane-border-style "fg=#3b4261"
set -g pane-active-border-style "fg=#7aa2f7"
# 狀態(tài)欄左側(cè):會(huì)話名
set -g status-left-length 30
set -g status-left "#[fg=#1a1b26,bg=#7aa2f7,bold] #S #[default] "
# 狀態(tài)欄右側(cè):時(shí)間日期
set -g status-right-length 50
set -g status-right "#[fg=#565f89] %Y-%m-%d #[fg=#1a1b26,bg=#7aa2f7,bold] %H:%M "
# 消息樣式
set -g message-style "bg=#7aa2f7,fg=#1a1b26,bold"
# -------------------- 其他優(yōu)化 --------------------
# 監(jiān)聽窗口活動(dòng)(有輸出時(shí)高亮提示)
setw -g monitor-activity on
set -g visual-activity off
tmux 配置說明文檔
基于當(dāng)前
~/.tmux.conf配置編寫,適合零基礎(chǔ)新手。
配置文件位置:~/.tmux.conf
tmux 版本:3.2a
一、tmux 是什么?
tmux(Terminal Multiplexer)是一個(gè)終端復(fù)用器,核心能力:
- 分屏:在一個(gè)終端窗口里同時(shí)顯示多個(gè)終端
- 會(huì)話:關(guān)閉終端窗口后程序不會(huì)死,下次可以重新連上
- 遠(yuǎn)程友好:SSH 斷了也能恢復(fù)工作現(xiàn)場(chǎng)
簡單理解:tmux 讓一個(gè)終端窗口變成多個(gè)終端,而且關(guān)不掉。
安裝(如果還沒裝)
sudo apt install tmux
二、最重要的概念:前綴鍵
什么是前綴鍵?
tmux 有一個(gè)特殊按鍵叫前綴鍵(prefix key)。你的配置把前綴鍵設(shè)為 Ctrl+a。
絕大多數(shù) tmux 快捷鍵都需要兩步操作:
第一步:按下 Ctrl+a,然后松開
第二步:再按下一個(gè)功能鍵
?? 新手最容易犯的錯(cuò)
很多人會(huì)同時(shí)按住 Ctrl+a 和后面的鍵,這是不對(duì)的。
正確操作示范(以豎分屏 | 為例):
1. 按住 Ctrl
2. 按一下 a
3. 松開 Ctrl 和 a ← 注意:這里要松開!
4. 按一下 Shift+\(即 | 鍵)
整個(gè)過程大概像這樣:Ctrl+a ... 松手 ... |
速記格式說明
本文檔用以下格式表示快捷鍵:
-
Ctrl+a |→ 先按Ctrl+a松開,再按| -
Alt+h→ 直接按,不需要前綴鍵(配置里用-n標(biāo)記的都不需要)
三、三大核心概念
tmux 用三個(gè)層級(jí)組織你的工作區(qū):
Session(會(huì)話)
└── Window(窗口)—— 底部狀態(tài)欄顯示的標(biāo)簽頁
└── Pane(窗格)—— 屏幕上分割出來的小區(qū)域
打個(gè)比方:
- Session = 一個(gè)工作項(xiàng)目
- Window = 項(xiàng)目里的不同任務(wù)(瀏覽器標(biāo)簽頁的感覺)
- Pane = 同一個(gè)任務(wù)里需要并排看的東西
四、會(huì)話(Session)管理
啟動(dòng)與退出
# 啟動(dòng)一個(gè)匿名會(huì)話
tmux
# 啟動(dòng)一個(gè)命名會(huì)話(推薦,方便后續(xù)查找)
tmux new -s myproject
# 啟動(dòng)一個(gè)指定名稱的會(huì)話,并給它起個(gè)窗口名
tmux new -s myproject -n editor
# 從會(huì)話中脫離(會(huì)話在后臺(tái)繼續(xù)運(yùn)行,程序不會(huì)中斷)
# 快捷鍵:Ctrl+a d
# 或者命令:
tmux detach
查看與恢復(fù)
# 列出所有會(huì)話
tmux ls
# 輸出示例:
# myproject: 1 windows (created Tue Apr 15 10:00:00 2026)
# work: 3 windows (created Tue Apr 15 09:30:00 2026)
# 重新連接到上次的會(huì)話
tmux attach
# 或簡寫
tmux a
# 連接到指定會(huì)話
tmux attach -t myproject
# 或簡寫
tmux a -t myproject
會(huì)話內(nèi)切換
| 快捷鍵 | 說明 |
|---|---|
Ctrl+a s |
列出所有會(huì)話(可用方向鍵選擇,Enter 切換) |
Ctrl+a $ |
重命名當(dāng)前會(huì)話 |
Ctrl+a d |
脫離當(dāng)前會(huì)話(回到普通終端) |
殺掉會(huì)話
# 殺掉指定會(huì)話
tmux kill-session -t myproject
# 殺掉所有會(huì)話
tmux kill-server
五、窗口(Window)管理
窗口就像瀏覽器的標(biāo)簽頁,在底部狀態(tài)欄顯示。
| 快捷鍵 | 說明 |
|---|---|
Ctrl+a c |
新建窗口(自動(dòng)保持當(dāng)前路徑) |
Ctrl+a 1 ~ Ctrl+a 9
|
跳轉(zhuǎn)到第 1~9 個(gè)窗口 |
Ctrl+a n |
下一個(gè)窗口(next) |
Ctrl+a p |
上一個(gè)窗口(previous) |
Ctrl+a w |
列出所有窗口(可用方向鍵選擇) |
Ctrl+a , |
重命名當(dāng)前窗口 |
Ctrl+a & |
關(guān)閉當(dāng)前窗口 |
狀態(tài)欄怎么看?
[myproject] 0:vim- 1:bash* 2:git-
↑ ↑ ↑
非活動(dòng) 當(dāng)前窗口 非活動(dòng)
- 帶高亮背景的是當(dāng)前窗口
- 帶
*的是當(dāng)前窗口 - 帶
-的是非活動(dòng)窗口 - 窗口編號(hào)從 1 開始(你的配置設(shè)定了
base-index 1)
六、窗格(Pane)管理 —— 分屏
這是 tmux 最常用的功能之一。
分屏
| 快捷鍵 | 說明 | |
|---|---|---|
Ctrl+a | |
左右豎分屏(` | ` 豎線,視覺上和方向一致) |
Ctrl+a - |
上下橫分屏(- 橫線,視覺上和方向一致) |
操作步驟(豎分屏):
1. Ctrl+a(松開)
2. Shift+\(即 | 鍵)
切換窗格
| 快捷鍵 | 說明 |
|---|---|
Alt+h |
切到左邊窗格 |
Alt+j |
切到下邊窗格 |
Alt+k |
切到上邊窗格 |
Alt+l |
切到右邊窗格 |
注意:這四個(gè)鍵不需要前綴鍵,直接
Alt+h就行。
記憶方式:和 vim 的 h/j/k/l 完全一致(左/下/上/右)。
調(diào)整窗格大小
| 快捷鍵 | 說明 |
|---|---|
Ctrl+a H |
窗格向左擴(kuò)大 5 格 |
Ctrl+a J |
窗格向下擴(kuò)大 5 格 |
Ctrl+a K |
窗格向上擴(kuò)大 5 格 |
Ctrl+a L |
窗格向右擴(kuò)大 5 格 |
Ctrl+a H可以連續(xù)按(按住 H 不松),因?yàn)榕渲美镉昧?-r(repeatable)。
其他窗格操作
| 快捷鍵 | 說明 |
|---|---|
Ctrl+a > |
當(dāng)前窗格和下一個(gè)窗格交換位置 |
Ctrl+a < |
當(dāng)前窗格和上一個(gè)窗格交換位置 |
Ctrl+a x |
關(guān)閉當(dāng)前窗格(會(huì)有確認(rèn)提示) |
Ctrl+a z |
當(dāng)前窗格全屏/恢復(fù)(再按一次恢復(fù)) |
七、復(fù)制模式(Copy Mode)
當(dāng)你在 tmux 里想翻看之前的輸出、復(fù)制一段文字時(shí),需要進(jìn)入「復(fù)制模式」。
進(jìn)入與退出
| 操作 | 說明 |
|---|---|
Ctrl+a Enter |
進(jìn)入復(fù)制模式 |
q |
退出復(fù)制模式 |
復(fù)制模式下的操作(vi 風(fēng)格)
進(jìn)入復(fù)制模式后,可以用 vi 風(fēng)格的按鍵移動(dòng)光標(biāo):
| 按鍵 | 說明 |
|---|---|
h/j/k/l |
左/下/上/右移動(dòng)光標(biāo) |
w / b
|
下一個(gè)詞 / 上一個(gè)詞 |
gg |
跳到最頂部 |
G |
跳到最底部 |
Ctrl+u |
向上翻半頁 |
Ctrl+d |
向下翻半頁 |
選擇與復(fù)制
| 按鍵 | 說明 |
|---|---|
v |
開始選擇(移動(dòng)光標(biāo)來選中文字) |
y |
復(fù)制選中內(nèi)容到系統(tǒng)剪貼板,并退出復(fù)制模式 |
q |
不復(fù)制,直接退出 |
完整復(fù)制流程示例
場(chǎng)景:你想復(fù)制終端里的一段輸出
1. Ctrl+a Enter ← 進(jìn)入復(fù)制模式
2. 用 j/k 或方向鍵移動(dòng)光標(biāo)到要復(fù)制的起始位置
3. 按 v ← 開始選擇(文字會(huì)高亮)
4. 用 j/k 移動(dòng)光標(biāo)到結(jié)束位置
5. 按 y ← 復(fù)制到系統(tǒng)剪貼板,自動(dòng)退出復(fù)制模式
6. 在其他程序里 Ctrl+V ← 粘貼
鼠標(biāo)復(fù)制(更簡單)
你的配置啟用了鼠標(biāo)支持,所以也可以:
1. 直接用鼠標(biāo)拖選文字
2. 松開鼠標(biāo),內(nèi)容自動(dòng)復(fù)制到系統(tǒng)剪貼板
3. 在其他程序里 Ctrl+V 粘貼
八、同步輸入
同步輸入模式下,你在當(dāng)前窗格敲的每一個(gè)鍵都會(huì)同時(shí)發(fā)送到所有窗格。
| 快捷鍵 | 說明 |
|---|---|
Ctrl+a S |
開啟/關(guān)閉同步輸入 |
使用場(chǎng)景:同時(shí)操作多臺(tái)服務(wù)器時(shí),在一個(gè)窗格輸入命令,所有窗格同時(shí)執(zhí)行。
注意:用完記得再按一次 Ctrl+a S 關(guān)掉,否則你切換到別的窗格時(shí)會(huì)一頭霧水。
九、鼠標(biāo)操作
你的配置啟用了 mouse on,所以可以直接用鼠標(biāo):
| 操作 | 說明 |
|---|---|
| 點(diǎn)擊窗格 | 切換到該窗格 |
| 拖拽窗格邊框 | 調(diào)整窗格大小 |
| 鼠標(biāo)滾輪 | 向上滾動(dòng)查看歷史輸出 |
| 鼠標(biāo)拖選文字 | 自動(dòng)復(fù)制到系統(tǒng)剪貼板 |
| 點(diǎn)擊狀態(tài)欄窗口名 | 切換到該窗口 |
小技巧:如果想在 tmux 里用鼠標(biāo)選中復(fù)制(而不是進(jìn)入復(fù)制模式),
直接拖選即可,松開后自動(dòng)復(fù)制。需要粘貼到 tmux 內(nèi)部的話用Ctrl+a ]。
十、實(shí)用技巧
10.1 快速重載配置
修改 ~/.tmux.conf 后,不需要重啟 tmux:
Ctrl+a r → 顯示 "tmux config reloaded!" 即成功
10.2 命令模式
按 Ctrl+a : 進(jìn)入命令模式,可以輸入任何 tmux 命令:
:resize-pane -D 10 ← 當(dāng)前窗格向下擴(kuò)大 10 行
:swap-window -t 3 ← 把當(dāng)前窗口移到第 3 個(gè)位置
:set mouse off ← 臨時(shí)關(guān)閉鼠標(biāo)
:kill-session -t old ← 殺掉指定會(huì)話
10.3 在窗格間發(fā)送按鍵
有時(shí)你想在當(dāng)前窗格操作另一個(gè)窗格:
Ctrl+a : send-keys -t 1 "ls -la" Enter
這會(huì)向第 1 個(gè)窗格發(fā)送 ls -la 命令并執(zhí)行。
10.4 窗格全屏切換
正在一個(gè)窗格里專注工作時(shí),可以臨時(shí)全屏:
Ctrl+a z ← 當(dāng)前窗格全屏
Ctrl+a z ← 再按一次恢復(fù)
10.5 翻頁查看歷史
終端輸出太多,想往上翻看:
方法一:鼠標(biāo)滾輪直接滾(最直觀)
方法二:Ctrl+a Enter 進(jìn)入復(fù)制模式,然后用 Ctrl+u / Ctrl+d 翻頁
你的歷史緩沖區(qū)設(shè)置為 50000 行,足夠回看很長的輸出。
10.6 保存終端輸出到文件
在命令模式下:
:capture-pane -S -100 ← 捕獲當(dāng)前窗格最近 100 行
:save-buffer ~/output.txt ← 保存到文件
十一、狀態(tài)欄解讀
你的配置使用了 Tokyo Night 配色,狀態(tài)欄分三部分:
[左] [中] [右]
#S(會(huì)話名) 1:vim- 2:bash* 3:git- 2026-04-15 14:30
藍(lán)底白字 非活動(dòng) 當(dāng)前 非活動(dòng) 灰色 藍(lán)底白字
-
左側(cè)藍(lán)色塊:當(dāng)前會(huì)話名稱(
#S) - 中間:窗口列表,高亮的是當(dāng)前窗口
- 右側(cè):日期和時(shí)間
窗格邊框:
- 非活動(dòng)窗格:暗藍(lán)色邊框
- 當(dāng)前窗格:亮藍(lán)色邊框
十二、常見問題
Q:按了快捷鍵沒反應(yīng)?
檢查以下幾點(diǎn):
- 是否先按了
Ctrl+a并松開了? -
|需要Shift+\,不是單獨(dú)按\ - 確認(rèn)你在 tmux 會(huì)話內(nèi)(終端底部有狀態(tài)欄)
Q:鼠標(biāo)無法復(fù)制?
確認(rèn) xclip 已安裝:
which xclip
# 如果沒有輸出,安裝它:
# sudo apt install xclip
Q:顏色顯示不對(duì)?
確認(rèn)終端支持真彩色。在 .bashrc 或 .zshrc 中設(shè)置:
export TERM=xterm-256color
Q:SSH 斷開后怎么恢復(fù)?
# 重新連接到服務(wù)器后
tmux a # 恢復(fù)最近一個(gè)會(huì)話
tmux a -t work # 恢復(fù)指定會(huì)話
Q:怎么退出 tmux?
# 方法一:脫離(會(huì)話后臺(tái)繼續(xù)運(yùn)行)
Ctrl+a d
# 方法二:殺掉會(huì)話(徹底關(guān)閉)
tmux kill-session -t 會(huì)話名
# 方法三:殺掉所有
tmux kill-server
Q:快捷鍵和程序沖突了?
Alt+h/j/k/l 可能和其他程序沖突。如果某個(gè)程序需要這些按鍵,
可以臨時(shí)關(guān)閉 tmux 鼠標(biāo):Ctrl+a :set mouse off,
用完再開:Ctrl+a :set mouse on。
Q:tmux 里 vim/nvim 顏色不對(duì)?
確認(rèn) ~/.tmux.conf 里有這兩行(你的配置已包含):
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
十三、完整快捷鍵速查表
通用操作
| 快捷鍵 | 說明 | 需要前綴鍵? |
|---|---|---|
Ctrl+a |
前綴鍵 | - |
Ctrl+a ? |
顯示所有快捷鍵 | Yes |
Ctrl+a : |
進(jìn)入命令模式 | Yes |
Ctrl+a r |
重載配置文件 | Yes |
Ctrl+a d |
脫離當(dāng)前會(huì)話 | Yes |
窗格(Pane)
| 快捷鍵 | 說明 | 需要前綴鍵? |
|---|---|---|
Ctrl+a | |
左右豎分屏 | Yes |
Ctrl+a - |
上下橫分屏 | Yes |
Alt+h |
切到左窗格 | No |
Alt+j |
切到下窗格 | No |
Alt+k |
切到上窗格 | No |
Alt+l |
切到右窗格 | No |
Ctrl+a H |
窗格向左擴(kuò)大 | Yes |
Ctrl+a J |
窗格向下擴(kuò)大 | Yes |
Ctrl+a K |
窗格向上擴(kuò)大 | Yes |
Ctrl+a L |
窗格向右擴(kuò)大 | Yes |
Ctrl+a > |
和下一個(gè)窗格交換 | Yes |
Ctrl+a < |
和上一個(gè)窗格交換 | Yes |
Ctrl+a x |
關(guān)閉當(dāng)前窗格 | Yes |
Ctrl+a z |
全屏/恢復(fù)切換 | Yes |
窗口(Window)
| 快捷鍵 | 說明 | 需要前綴鍵? |
|---|---|---|
Ctrl+a c |
新建窗口 | Yes |
Ctrl+a 1~9 |
跳到第 N 個(gè)窗口 | Yes |
Ctrl+a n |
下一個(gè)窗口 | Yes |
Ctrl+a p |
上一個(gè)窗口 | Yes |
Ctrl+a w |
列出所有窗口 | Yes |
Ctrl+a , |
重命名窗口 | Yes |
Ctrl+a & |
關(guān)閉窗口 | Yes |
復(fù)制模式
| 快捷鍵 | 說明 | 需要前綴鍵? |
|---|---|---|
Ctrl+a Enter |
進(jìn)入復(fù)制模式 | Yes |
v |
開始選擇 | 僅復(fù)制模式內(nèi) |
y |
復(fù)制到系統(tǒng)剪貼板 | 僅復(fù)制模式內(nèi) |
q |
退出復(fù)制模式 | 僅復(fù)制模式內(nèi) |
| 鼠標(biāo)拖選 | 復(fù)制到系統(tǒng)剪貼板 | - |
會(huì)話(Session)
| 快捷鍵 | 說明 | 需要前綴鍵? |
|---|---|---|
Ctrl+a s |
列出所有會(huì)話 | Yes |
Ctrl+a $ |
重命名會(huì)話 | Yes |
Ctrl+a d |
脫離會(huì)話 | Yes |
Ctrl+a S |
開關(guān)同步輸入 | Yes |
十四、推薦的工作流
新手入門流程
1. 打開終端,輸入:tmux new -s work
2. 開始寫代碼,需要看日志?分屏:
Ctrl+a - (上下分屏,上面寫代碼,下面看日志)
3. 需要同時(shí)看另一個(gè)項(xiàng)目?新建窗口:
Ctrl+a c (新窗口,互不干擾)
4. 需要專注?全屏當(dāng)前窗格:
Ctrl+a z (再按恢復(fù))
5. 下班了?脫離會(huì)話:
Ctrl+a d (或者直接關(guān)掉終端窗口也行)
6. 明天繼續(xù):
tmux a -t work (工作現(xiàn)場(chǎng)完整恢復(fù))
進(jìn)階:多項(xiàng)目管理
# 每個(gè)項(xiàng)目一個(gè)會(huì)話
tmux new -s frontend # 前端項(xiàng)目
tmux new -s backend # 后端項(xiàng)目
tmux new -s devops # 運(yùn)維操作
# 在會(huì)話間切換
Ctrl+a s → 彈出會(huì)話列表,方向鍵選擇,Enter 切換
# 或者從終端直接切
tmux switch -t frontend
以上配置和文檔來自ai。