tmux 命令
tmux 是一个终端复用器(terminal multiplexer),允许你在一个终端窗口中创建、访问和控制多个终端会话。它可以帮助你在不同的任务之间轻松切换,同时保持工作状态,即使断开连接也不会丢失工作内容。
1. 基础概念
tmux 使用三层结构组织工作空间:
- 会话(Session):一个独立的工作环境,包含多个窗口
- 窗口(Window):类似于标签页,在同一个会话中可以创建多个窗口
- 面板(Pane):窗口中的子终端,可以将一个窗口分割成多个面板
2. 基本命令
启动与退出
-
tmux- 启动一个新的 tmux 会话
-
tmux new -s <session-name>- 创建一个指定名称的新会话
- 示例:
tmux new -s myproject
-
tmux attach或tmux a- 连接到最近的会话
-
tmux attach -t <session-name>或tmux a -t <session-name>- 连接到指定名称的会话
- 示例:
tmux a -t myproject
-
tmux detach或Ctrl+b d- 从当前会话分离
-
exit或Ctrl+d- 关闭当前面板,如果是最后一个面板则关闭窗口,如果是最后一个窗口则关闭会话
3. 会话管理
列出会话
tmux ls或tmux 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 detach或Ctrl+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-window或tmux 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-window或tmux splitw- 水平分割当前面板(上下)
-
tmux split-window -h或tmux 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 -U或tmux swap-p -U- 向上移动当前面板
-
tmux swap-pane -D或tmux swap-p -D- 向下移动当前面板
-
Ctrl+b {- 在会话中将当前面板向左或向上移动
-
Ctrl+b }- 在会话中将当前面板向右或向下移动
关闭面板
-
exit或Ctrl+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 的行为和外观。
常用配置示例
# 修改前缀键为 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
重载配置
修改配置文件后,可以使用以下命令重载配置:
tmux source-file ~/.tmux.conf
或者在 tmux 会话中使用快捷键:
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
复制模式
Ctrl+b [` 进入复制模式
Space 开始选择文本
Enter 复制选中的文本
Ctrl+b ] 粘贴复制的文本
命令模式
Ctrl+b : 进入命令模式
在命令模式下可以执行各种 tmux 命令,例如:
setw synchronize-panes on/off- 同步所有面板的输入display-message "Hello World"- 显示消息
总结
tmux 是一个强大的终端复用工具,可以显著提高终端工作效率。通过合理使用会话、窗口和面板,你可以创建一个高效的工作环境,同时保持工作状态的持久化。
要深入学习 tmux,可以查看官方文档或使用 man tmux 命令获取更详细的信息。