什么是 Tmux
tmux 是一款终端复用命令行工具,一般用于 Terminal 的窗口管理。应付绝大多数窗口管理的需求。
Tmux 安装
首先进行安装:
brew install tmux # OSX pacman -S tmux # archlinux apt-get install tmux # Ubuntu yum install tmux # Centos
安装好后就可以启用一个Tmux Session了:(通过 tmux new -s myname
可以指定Session名)
tmux
在Tmux Session中,通过<prefix>$
可以重命名当前Session。其中<prefix>
指的是tmux的前缀键,所有tmux快捷键都需要先按前缀键。它的默认值是Ctrl+b
。
<prefix>c
可以创建新的窗口(Window),<prefix>%
水平分割窗口(形成两个Pane),<prefix>"
垂直分割窗口。退出当前Session的快捷键是<prefix>d
。然后在
Bash中可以查看当前的tmux服务中有哪些Session:
tmux ls
然后根据Session的名字可以再回去:
tmux a -t myname (or at, or attach)
Tmux 使用
快捷键
一般情况下 tmux 中所有的快捷键都需要和前缀快捷键 Ctrl+b
来组合使用,以下是常用的窗格(pane)快捷键列表,大家可以依次尝试下:
窗格操作
%
左右平分出两个窗格"
上下平分出两个窗格x
关闭当前窗格{
当前窗格前移}
当前窗格后移;
选择上次使用的窗格o
选择下一个窗格,也可以使用上下左右方向键来选择space
切换窗格布局,tmux 内置了五种窗格布局,也可以通过⌥1
至⌥5
来切换z
最大化当前窗格,再次执行可恢复原来大小q
显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格
窗口操作
tmux 除了窗格以外,还有窗口(window) 的概念。依次使用以下快捷键来熟悉 tmux 的窗口操作:
c
新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态p
切换至上一窗口n
切换至下一窗口w
窗口列表选择&
关闭当前窗口,
重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id0
切换至 0 号窗口,使用其他数字 id 切换至对应窗口f
根据窗口名搜索选择窗口,可模糊匹配
会话操作
如果运行了多次 tmux
命令则会开启多个 tmux 会话(session)。在 tmux 会话中,使用前缀快捷键 ⌃b
配合以下快捷键可操作会话:
$
重命名当前会话s
选择会话列表d
detach 当前会话,运行后将会退出 tmux 进程,返回至 shell 主进程
在 shell 主进程下运行以下命令可以操作 tmux 会话:
tmux new -s foo # 新建名称为 foo 的会话
tmux ls # 列出所有 tmux 会话
tmux a # 恢复至上一次的会话
tmux a -t foo # 恢复名称为 foo 的会话,会话默认名称为数字
tmux kill-session -t foo # 删除名称为 foo 的会话
tmux kill-server # 删除所有的会话
除以上提到的快捷键以外,tmux 还有许多其他的快捷键和命令,使用前缀快捷键 Ctrl+b
加 ?
可以查看所有的快捷键列表,该列表视图为 tmux copy 模式,该模式下可使用以下快捷键(无需加Ctrl+b
前缀):
q
退出 copy 模式
Tmux 配置
基本配置
默认的<prefix>
是Ctrl+b
,如果你觉得不好按可以调整为Ctrl+a
,只需要在配置文件~/.tmux.conf
中加入:
unbind ^b set -g prefix 'C-a'
鼠标滚屏
tmux 默认配置中最糟糕的体验就是滚屏查看和文本复制(大家可以先试试看)。你需要先使用 ⌃b
[
快捷键进入 copy 模式,然后使用翻页、字符定位来选择需要的字符,效率远没有鼠标选择来的快。
因此 tmux 提供了一些个性化配置项来优化这些配置,首先在 shell 中运行 touch ~/.tmux.conf
新建用户配置文件。在文件中增加以下内容:
# 开启鼠标模式
set -g mode-mouse on
# 允许鼠标选择窗格
set -g mouse-select-pane on
# 如果喜欢给窗口自定义命名,那么需要关闭窗口的自动命名
set-option -g allow-rename off
# 如果对 vim 比较熟悉,可以将 copy mode 的快捷键换成 vi 模式
set-window-option -g mode-keys vi
载入配置
为了能让Tmux动态载入配置而不是重启,我们设一个快捷键<prefix>r
来重新载入配置:
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"
注意,通过
<prefix>r
重新载入配置并不等同于重启,只是增量地执行了配置文件中的所有命令而已。如果配置未生效,可以通过tmux kill-server
来强行关闭Tmux。
导出配置
如果你想知道当前tmux的设置,可通过tmux show -g
来查看(该命令需要tmux正在运行)。 你可能会需要把这些设置导出为文件:
tmux show -g >> current.tmux.conf
参考链接