`tmux` (Terminal Multiplexer) 常用命令

tmux (Terminal Multiplexer) 是一个非常强大的终端复用工具,它允许你在一个终端窗口中创建、管理多个终端会话、窗口和窗格。以下是一些 tmux 的常用命令,分为几个主要类别:

一、核心概念:前缀键 (Prefix Key)

所有 tmux 内部的命令都需要先按下前缀键,然后才能按相应的命令键。

默认的前缀键是:Ctrl + b

所以,当你看到 Ctrl-b c 时,意思是:

  1. 按住 Ctrl 键,然后按 b 键,然后松开 Ctrlb

  2. 迅速按 c 键。

二、会话 (Session) 管理

会话是 tmux 的最高级别容器,你可以启动多个独立的会话,并在会话之间切换。

  • tmuxtmux new: 启动一个新的 tmux 会话。

  • tmux new -s my_session: 启动一个名为 my_session 的新会话。

  • tmux lstmux list-sessions: 列出所有当前的 tmux 会话。

  • tmux attach -t my_session: 连接(或重新连接)到名为 my_session 的会话。

  • tmux attach: 如果只有一个会话,直接连接到它。

  • Ctrl-b d: 从当前会话中分离(detach)。你的会话会在后台继续运行,你可以之后再连接回来。

  • tmux kill-session -t my_session: 杀死(终止)名为 my_session 的会话。

  • Ctrl-b $: 重命名当前会话。

三、窗口 (Window) 管理

一个会话可以包含多个窗口,每个窗口都有自己的编号。

  • Ctrl-b c: 创建一个新窗口。

  • Ctrl-b n: 切换到下一个窗口。

  • Ctrl-b p: 切换到上一个窗口。

  • Ctrl-b <数字> (例如 Ctrl-b 0, Ctrl-b 1): 切换到指定编号的窗口。

  • Ctrl-b w: 以交互式列表显示所有窗口,你可以选择要切换的窗口。

  • Ctrl-b ,: 重命名当前窗口。

  • Ctrl-b &: 关闭当前窗口(会提示确认 (y/n))。

  • Ctrl-b .: 将当前窗口移动到不同的位置(提示输入新索引)。

  • Ctrl-b f: 查找窗口(按窗口名搜索)。

四、窗格 (Pane) 管理

一个窗口可以进一步分割成多个窗格,每个窗格都运行一个独立的 shell。

  • Ctrl-b %: 将当前窗格垂直分割(分成左右两个窗格)。

  • Ctrl-b ": 将当前窗格水平分割(分成上下两个窗格)。

  • Ctrl-b <箭头键> (例如 Ctrl-b ↑, Ctrl-b ↓, Ctrl-b ←, Ctrl-b →): 切换到指定方向的相邻窗格。

  • Ctrl-b o: 顺时针切换到下一个窗格。

  • Ctrl-b x: 关闭当前窗格(会提示确认 (y/n))。

  • Ctrl-b z: 放大/缩小(zoom)当前窗格,使其占据整个窗口。再次按下可恢复。

  • Ctrl-b space: 切换当前窗格的布局(预设了几种分割布局,循环切换)。

  • Ctrl-b {: 将当前窗格与上一个窗格交换位置。

  • Ctrl-b }: 将当前窗格与下一个窗格交换位置。

  • Ctrl-b Alt-<箭头键> (或 Ctrl-b Ctrl-<箭头键> ): 调整当前窗格的大小。例如:

    • Ctrl-b Alt-↑: 向上缩小窗格

    • Ctrl-b Alt-↓: 向下放大窗格

    • Ctrl-b Alt-←: 向左缩小窗格

    • Ctrl-b Alt-→: 向右放大窗格

    • 注意:这需要一些配置,或者直接使用命令模式。

    更通用的调整大小方法(命令模式):

    • Ctrl-b : resize-pane -U 10 (向上调整10行)

    • Ctrl-b : resize-pane -D 10 (向下调整10行)

    • Ctrl-b : resize-pane -L 10 (向左调整10列)

    • Ctrl-b : resize-pane -R 10 (向右调整10列)

  • Ctrl-b q: 显示窗格编号。显示后,输入数字可以直接切换到对应窗格。

  • Ctrl-b !: 将当前窗格破裂(break)成一个新窗口。

  • Ctrl-b ;: 切换到上次活动的窗格。

  • Ctrl-b : set-window-option synchronize-panes: 切换窗格同步模式。开启后,你在一个窗格中输入的命令会同步到所有其他窗格中执行,非常适合同时在多台服务器上执行相同命令。再次执行可关闭。

五、复制模式 (Copy Mode) 与粘贴

tmux 可以让你复制终端输出的内容,即使它们已经滚动出屏幕。

  • Ctrl-b [: 进入复制模式。

    • 进入复制模式后,你可以使用 Vim 风格的按键(或 Emacs 风格,取决于你的配置)进行导航:

      • hjkl 或 箭头键: 移动光标

      • Ctrl-u / Ctrl-d: 向上/向下翻页

      • Space: 开始选择(标记区域)

      • Enter: 结束选择,复制选中的内容。

  • Ctrl-b ]: 粘贴上次复制的内容。

六、其他常用命令

  • Ctrl-b ?: 显示所有快捷键的帮助信息。

  • Ctrl-b t: 显示一个时钟。

  • Ctrl-b :: 进入 tmux 命令模式。你可以在这里输入各种 tmux 命令,例如:

    • Ctrl-b : source-file ~/.tmux.conf (重新加载 tmux 配置文件)

    • Ctrl-b : new-window (创建新窗口)

    • Ctrl-b : kill-pane (关闭当前窗格)

  • Ctrl-b !: 将当前窗格转换为一个独立的新窗口。

七、自定义 (~/.tmux.conf)

tmux 强大的一个原因是可以高度自定义。你可以在 ~/.tmux.conf 文件中定义自己的快捷键、修改状态栏、设置主题等。

  • 修改前缀键: 如果你觉得 Ctrl-b 不方便,可以修改。例如改为 Ctrl-a (与 Screen 相似):

    
    unbind C-b
    set -g prefix C-a
    bind C-a send-prefix
    

    修改后,需要 Ctrl-b : source-file ~/.tmux.conf 来重新加载配置。

掌握这些常用命令,你就能大大提高在终端下工作的效率!