tmux 命令

tmux 是一个终端复用器(terminal multiplexer),允许你在一个终端窗口中创建、访问和控制多个终端会话。它可以帮助你在不同的任务之间轻松切换,同时保持工作状态,即使断开连接也不会丢失工作内容。

1. 基础概念

tmux 使用三层结构组织工作空间:

  • 会话(Session):一个独立的工作环境,包含多个窗口
  • 窗口(Window):类似于标签页,在同一个会话中可以创建多个窗口
  • 面板(Pane):窗口中的子终端,可以将一个窗口分割成多个面板

2. 基本命令

启动与退出

  • tmux

    • 启动一个新的 tmux 会话
  • tmux new -s <session-name>

    • 创建一个指定名称的新会话
    • 示例:tmux new -s myproject
  • tmux attachtmux a

    • 连接到最近的会话
  • tmux attach -t <session-name>tmux a -t <session-name>

    • 连接到指定名称的会话
    • 示例:tmux a -t myproject
  • tmux detachCtrl+b d

    • 从当前会话分离
  • exitCtrl+d

    • 关闭当前面板,如果是最后一个面板则关闭窗口,如果是最后一个窗口则关闭会话

3. 会话管理

列出会话

  • tmux lstmux list-sessions
    • 列出所有 tmux 会话

创建会话

  • tmux new -s <session-name>
    • 创建一个指定名称的新会话
    • 示例:tmux new -s dev

连接会话

  • tmux attach -t <session-name>tmux a -t <session-name>
    • 连接到指定名称的会话
    • 示例:tmux a -t dev

分离会话

  • tmux detachCtrl+b d
    • 从当前会话分离

重命名会话

  • tmux rename-session -t <old-name> <new-name>

    • 重命名会话
    • 示例:tmux rename-session -t dev development
  • `Ctrl+b — title: tmux 命令 description: tmux 命令是一个用于在多个终端会话之间切换和管理的命令行工具。它可以用于创建多个窗口、面板和会话,方便在不同的任务之间切换。 keywords:

    • tmux
    • 命令行工具
    • 终端会话
    • 窗口管理
    • 面板分割
    • 会话管理

  • 在会话中直接重命名当前会话

杀死会话

  • tmux kill-session -t <session-name>

    • 杀死指定会话
    • 示例:tmux kill-session -t dev
  • tmux kill-server

    • 杀死 tmux 服务器,关闭所有会话

4. 窗口管理

创建窗口

  • tmux new-windowtmux neww

    • 创建一个新窗口
  • tmux new-window -n <window-name>tmux neww -n <window-name>

    • 创建一个指定名称的新窗口
    • 示例:tmux neww -n editor
  • Ctrl+b c

    • 在会话中直接创建新窗口

切换窗口

  • tmux select-window -t <window-number>tmux selectw -t <window-number>

    • 切换到指定编号的窗口
    • 示例:tmux selectw -t 2
  • tmux select-window -t <window-name>tmux selectw -t <window-name>

    • 切换到指定名称的窗口
    • 示例:tmux selectw -t editor
  • Ctrl+b <window-number>

    • 在会话中直接切换到指定编号的窗口(0-9)
  • Ctrl+b n

    • 切换到下一个窗口
  • Ctrl+b p

    • 切换到上一个窗口

重命名窗口

  • tmux rename-window <new-name>tmux renamew <new-name>

    • 重命名当前窗口
    • 示例:tmux renamew code
  • Ctrl+b ,

    • 在会话中直接重命名当前窗口

关闭窗口

  • tmux kill-window -t <window-number>tmux killw -t <window-number>

    • 关闭指定编号的窗口
    • 示例:tmux killw -t 2
  • tmux kill-window -t <window-name>tmux killw -t <window-name>

    • 关闭指定名称的窗口
    • 示例:tmux killw -t editor
  • Ctrl+b &

    • 在会话中直接关闭当前窗口

5. 面板管理

分割面板

  • tmux split-windowtmux splitw

    • 水平分割当前面板(上下)
  • tmux split-window -htmux splitw -h

    • 垂直分割当前面板(左右)
  • Ctrl+b "

    • 在会话中直接水平分割当前面板
  • Ctrl+b %

    • 在会话中直接垂直分割当前面板

切换面板

  • tmux select-pane -t <pane-number>tmux selectp -t <pane-number>

    • 切换到指定编号的面板
    • 示例:tmux selectp -t 1
  • Ctrl+b <arrow-key>

    • 在会话中直接切换到相邻面板
  • Ctrl+b q

    • 显示面板编号,然后输入编号切换

调整面板大小

  • tmux resize-pane -U <number>tmux resize-p -U <number>

    • 向上调整面板大小
    • 示例:tmux resize-p -U 10
  • tmux resize-pane -D <number>tmux resize-p -D <number>

    • 向下调整面板大小
    • 示例:tmux resize-p -D 10
  • tmux resize-pane -L <number>tmux resize-p -L <number>

    • 向左调整面板大小
    • 示例:tmux resize-p -L 10
  • tmux resize-pane -R <number>tmux resize-p -R <number>

    • 向右调整面板大小
    • 示例:tmux resize-p -R 10
  • Ctrl+b Ctrl+<arrow-key>

    • 在会话中直接调整面板大小

移动面板

  • tmux swap-pane -Utmux swap-p -U

    • 向上移动当前面板
  • tmux swap-pane -Dtmux swap-p -D

    • 向下移动当前面板
  • Ctrl+b {

    • 在会话中将当前面板向左或向上移动
  • Ctrl+b }

    • 在会话中将当前面板向右或向下移动

关闭面板

  • exitCtrl+d

    • 关闭当前面板
  • tmux kill-pane -t <pane-number>tmux killp -t <pane-number>

    • 关闭指定编号的面板
    • 示例:tmux killp -t 1
  • Ctrl+b x

    • 在会话中直接关闭当前面板

6. 常用快捷键

前缀键

所有 tmux 快捷键都以前缀键开始,默认是 Ctrl+b(可以在配置文件中修改)。

会话快捷键

  • Ctrl+b s
    • 列出所有会话,可选择切换

窗口快捷键

  • Ctrl+b c

    • 创建新窗口
  • Ctrl+b <number>

    • 切换到指定编号的窗口
  • Ctrl+b n

    • 切换到下一个窗口
  • Ctrl+b p

    • 切换到上一个窗口
  • Ctrl+b ,

    • 重命名当前窗口
  • Ctrl+b &

    • 关闭当前窗口
  • Ctrl+b w

    • 列出所有窗口,可选择切换

面板快捷键

  • Ctrl+b "

    • 水平分割面板
  • Ctrl+b %

    • 垂直分割面板
  • Ctrl+b <arrow-key>

    • 切换到相邻面板
  • Ctrl+b q

    • 显示面板编号
  • Ctrl+b x

    • 关闭当前面板
  • Ctrl+b z

    • 最大化/恢复当前面板
  • Ctrl+b Space

    • 切换面板布局

其他快捷键

  • Ctrl+b t

    • 显示时钟
  • Ctrl+b ?

    • 显示所有快捷键
  • Ctrl+b :

    • 进入命令模式

7. 配置文件

tmux 的配置文件位于 ~/.tmux.conf,可以在其中自定义 tmux 的行为和外观。

常用配置示例

bash
# 修改前缀键为 Ctrl+a(更方便使用)
set -g prefix C-a
bind C-a send-prefix

# 设置窗口和面板的索引从 1 开始
set -g base-index 1
setw -g pane-base-index 1

# 启用鼠标支持
set -g mouse on

# 设置状态栏样式
set -g status-bg black
set -g status-fg white
set -g status-left-length 30
set -g status-left "#[fg=green]#S#[default]"
set -g status-right "#[fg=yellow]#H#[default] #[fg=cyan]%H:%M:%S#[default]"

# 设置窗口列表样式
setw -g window-status-format "#[fg=cyan]#I #[fg=white]#W#[default]"
setw -g window-status-current-format "#[fg=green]#I #[fg=white]#W#[default]"

# 自定义快捷键
# 将面板分割键改为更直观的组合
bind | split-window -h
bind - split-window -v

# 调整面板大小的快捷键
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

重载配置

修改配置文件后,可以使用以下命令重载配置:

bash
tmux source-file ~/.tmux.conf

或者在 tmux 会话中使用快捷键:

text
Ctrl+b : source-file ~/.tmux.conf

8. 实用技巧

会话管理

  • 使用有意义的会话名称:tmux new -s project-name
  • 列出所有会话:tmux ls
  • 快速切换会话:Ctrl+b s

窗口管理

  • 为每个主要任务创建一个窗口
  • 使用描述性的窗口名称:Ctrl+b ,
  • 在不同窗口间快速切换:Ctrl+b <number>

面板管理

  • 使用水平分割查看代码和终端输出
  • 使用垂直分割比较文件内容
  • 最大化当前面板专注工作:Ctrl+b z

复制模式

text
Ctrl+b [` 进入复制模式
Space 开始选择文本
Enter 复制选中的文本
Ctrl+b ] 粘贴复制的文本

命令模式

text
Ctrl+b : 进入命令模式

在命令模式下可以执行各种 tmux 命令,例如:

  • setw synchronize-panes on/off - 同步所有面板的输入
  • display-message "Hello World" - 显示消息

总结

tmux 是一个强大的终端复用工具,可以显著提高终端工作效率。通过合理使用会话、窗口和面板,你可以创建一个高效的工作环境,同时保持工作状态的持久化。

要深入学习 tmux,可以查看官方文档或使用 man tmux 命令获取更详细的信息。

最后更新:2026-02-07