linux-tmux使用

linux-tmux使用


前篇

概念说明

tmux 可以新建多个 会话 (session), 每个会话又可以创建多个 窗口 (Windows), 每个窗口又可以分离出 多个 面板 (panel)

一般情况下, 一个 会话 就够了, 剩下的就多开 窗口 和 面板就行了


安装

  • Ubuntu

    1
    $ apt install tmux

定义别名

  • 方便使用

    1
    2
    3
    4
    5
    6
    7
    8
    $ vim ~/.bash_profile

    alias tnew='tmux new -s'
    alias tls='tmux ls'
    alias td='tmux detach'
    #alias ta='tmux attach -t'
    alias ta='tmux a'
    alias tkill='tmux kill-session -t'

配置

  • 常用配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ vim ~/.tmux.conf

    set -g history-file ~/.tmux_history
    set-option -g allow-rename off
    set-option -g mouse on
    set -g base-index 1
    set -g pane-base-index 1
    set -g escape-time 0
    setw -g mode-keys vi

    # 关闭鼠标右键弹出菜单
    unbind-key -n MouseDown3Pane
    unbind-key -n MouseDown3Status
    unbind-key -n MouseDown3StatusLeft

重载配置

  1. 修改 tmux 的配置文件

    1
    $ vim ~/.tmux.conf
  2. 使之生效可以通过重启 tmux 服务, 或者 tmux 里使用重载命令

    1. 在 tmux 会话中, 使用 Ctrl b + : 进入到 命令模式
    2. 然后使用重载命令
      1
      source-file ~/.tmux.conf

踩坑

面板卡死

  • 偶尔出现面板卡死的情况, 直接 Ctrl b + x kill 掉面板, 新建一个面板

常用命令

进入选择模式时, 按 q 都可以退出选择

会话

  • 创建会话

    1
    $ tmux new -s [session_name] // 推荐指定名字的会话
  • 离开会话 (不是退出, 后台继续运行)

    1
    $ tmux detach
    • 或者 Ctrl b + d
  • 进入会话

    1
    2
    $ tmux a # 默认进入上一次离开的回话
    $ tmux a -t [demo] # 进入到名称为 demo 的会话
  • 列出所有会话

    1
    2
    3
    4
    5
    $ tmux ls

    0: 1 windows (created Tue Aug 13 17:08:47 2024)
    3: 4 windows (created Wed Aug 14 16:26:25 2024)
    hello: 2 windows (created Wed Aug 14 16:55:42 2024)
    • 这个命令可以在 会话 里/外 都可以运行
  • 会话跳转, 使用 Ctrl b + s

    1
    2
    3
    (0)  + 0: 1 windows
    (1) + 3: 4 windows (attached)
    (2) + hello: 2 windows
  • 关闭会话

    • 关闭指定会话
      1
      $ tmux kill-session -t [session_name]
    • 关闭所有会话
      1
      $ tmux kill-server
  • 重命名会话

    • 不在会话中

      1
      $ tmux rename-session -t [old_name] [new_name]
    • 已经在会话中

      1
      $ tmux rename-session [new_name]
  • 重载会话: Ctrl b + r


系统

  • Ctrl b + [ : 进入复制模式 (也就是用鼠标随便框选),按q退出
  • Ctrl b + ] : 粘贴复制模式中复制的文本
  • Ctrl b + d : 离开会话 (不是退出, 后台继续运行)

窗口

  • 分离

    • Ctrl b + c : 创建窗口
    • Ctrl b + & : 关闭窗口
  • 切换

    • Ctrl b + 0~9 : 切换到 指定 窗口
    • Ctrl b + p : 切换到 上一个 窗口
    • Ctrl b + n : 切换到 下一个 窗口
  • 其他

    • Ctrl b + , : 重命名当前窗口
  • 选择

    • Ctrl b + w : 列出所有 会话 及其 窗口
    • Ctrl b + f : 快速定位到窗口(输入关键字匹配窗口名称, 找不到 或 不输入 则会列出所有 会话 及其 窗口, 等价于 Ctrl b + w 一样)

面板

  • 分离
    • Ctrl b + “ : 当前面板上下一分为二,下侧新建面板
    • Ctrl b + % : 当前面板左右一分为二,右侧新建面板
    • Ctrl b + x : 关闭当前面板(关闭前需输入y or n确认)
    • Ctrl b + ! : 将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效)
  • 置换 (调换面板位置, 并不是移动光标)
    • Ctrl b + { : 向前 置换当前面板
    • Ctrl b + } : 向后 置换当前面板
  • 切换 (移动光标)
    • Ctrl b + q : 显示面板编号,在编号消失前输入对应的数字可切换到相应的面板
    • Ctrl b + ; : 在最后使用的两个面板间来回切换
    • Ctrl b + 方向键 : 切换到目标方向的面板
    • Ctrl b + o : 选择下一面板
  • 其他
    • Ctrl b + z : 最大化当前面板,再重复一次按键后恢复正常(v1.8版本新增)
    • Ctrl b + t : 显示时钟
    • Ctrl b + : 命令模式后输入 respawn-pane -k : 重启面板
  • 布局
    • Ctrl b + 空格键 : 在自带的面板布局中循环切换
    • Ctrl b + Ctrl o : 顺时针旋转当前窗口中的所有面板
    • Ctrl b + Alt 方向键 : 以 5 个单元格为单位调整当前面板边缘
    • Ctrl b + Ctrl 方向键 : 以 1 个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖)