Skip to content

tmux

tmux

tmux 安装

shell
brew install tmux         # Mac
sudo apt install -y tmux  # Ubuntu/Debian

tmux 中的名称与前缀键

在 tmux 中,有三个基本的概念

  • session : 会话/任务
  • window : 窗口
  • pane :窗格

在 tmux 中,使用快捷键是使用 ctrl+B 去唤起快捷键的 (MacOS 中则是 control+B),叫前缀键 (网上可能缩写为 C+B)

例如挂起 session 的快捷键是 ctrl+B d 。意思是,先按下前缀键 ctrl+B 唤起快捷键操作,然后接着按下 d 进行相应操作

tmux 的会话管理

新建会话

新建一个默认的 session

shell
tmux

这时候新建一个默认的 session ,底部有一个状态栏。左侧 [0] 0:zsh* 是窗口编号、名称和终端信息,右侧是当前的系统信息。

tmux

为了方便 session 的管理,在新建 session 时,(推荐)指定名称

shell
tmux new -s <session_name>

# example : create a session to test
tmux new -s test
# [test] 0:zsh*

这时候的 session 名称就是 test 了, [test]0:zsh*

挂起会话

当想要挂起一个 session 让其在后台继续工作而不是退出的时候

shell
tmux detach

也可以使用快捷键 ctrl+B d 挂起当前 session

这时候该 session 会继续挂在后台运行继续执行任务 (显示为 [detach (from seesion xxx)]),直到再次被唤起或被 kill 掉。

查看会话

我们想查看当前 tmux 挂在后台的 session 时,可以

shell
tmux list-sessions
tmux ls # 简写
# test: 1 windows (created Sun Aug 25 19:49:08 2024)

快捷键 ctrl+B s

如果已经在某个 session 内的时候,可以通过快捷键 ctrl+B s 来查看,黄色高光部分就是当前正在运行的 session tmux name

进入会话

当我们想要进入一个 session 的时候,可以通过 session 的编号或者名字来进入

shell
tmux attach -t <session_name>
tmux a -t <session_name> # 简写

例如当前运行的两个 session 分别是编号为 0名称为 test 的 session

我们想要进入其中一个 session 的时候,可以通过编号进入,也可以通过名称进入

shell
tmux a -t 0
tmux a -t test

退出会话

当完成任务后,需要彻底退出 session 而不是挂在后台的时候,可以

shell
tmux kill-session -t <session_name>

# example :
tmux kill-session -t test

这时候 session 就会被 kill 掉,并且出现 [exited] ,表示已经退出了。在 tmux ls 查看 session 的时候,也不会有该 session 了

退出当前 session 的快捷键是 ctrl+d

切换会话

执行命令,可以从当前的 session 快速切换到另一个 session:

shell
tmux switch -t <session_name>

重命名会话

shell
tmux rename-session -t <old_session_name> <new_session_name>

# example : rename test to run
tmux rename-session -t test run

快捷键 ctrl+b $

TIP

后续内容还没整理完成

窗格管理

划分窗格

  • Ctrl+b %:划分左右两个窗格。
  • Ctrl+b ":划分上下两个窗格。

切换窗格

  • Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。
  • Ctrl+b ;:光标切换到上一个窗格。
  • Ctrl+b o:光标切换到下一个窗格。
  • Ctrl+b {:当前窗格与上一个窗格交换位置。
  • Ctrl+b }:当前窗格与下一个窗格交换位置。
  • Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。
  • Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。
  • Ctrl+b x:关闭当前窗格。
  • Ctrl+b !:将当前窗格拆分为一个独立窗口。
  • Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
  • Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。 prefix + (ctrl)+上下左右箭头 : 与上面命令不同的是,ctrl + b按完之后,不要松开ctrl,一直按着,然后再按箭头来调整。不过因为在mac下ctrl+箭头是切换屏幕,所以还得在偏好设置->键盘->快捷键->Mission Control里把对应的快捷键取消掉。
  • Ctrl+b q:显示窗格编号。

窗口管理

新建窗口 ctrl+b c 重命名窗口 ctrl+b , 关闭窗口 ctrl+b x

快捷键

设置

bash
# Use Alt-arrow keys to switch panes
# 不用按prefix,直接用alt+箭头在pane之间switch。%%
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Shift arrow to switch windows
# 不用按prefix,直接用shift+箭头在window之间switch。
bind -n S-Left previous-window
bind -n S-Right next-window

# Mouse mode
# 开启鼠标模式。用鼠标就能切换window,pane,
set -g mouse on


# Set easier window split keys
# 这一部分是用来更方便切分pane的。prefix + v 代表竖着切,prefix + h 代表横着切。比起默认的切割方法不仅直观而且方便。
bind-key v split-window -h
bind-key h split-window -v

# Easy config reload
# prefix+r 加载文件
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"