Tmux使用指南

在linux上, 像tmux这么好用的软件, 身边很多朋友却不会用, 推荐给他们的时候总是缺一篇综合性的指导文, 所以搜刮了一下网上的教程, 又添了些自己在平时使用过程中的技巧, 写在这里.

tmux外命令操作

启动新会话:tmux [new -s 会话名 -n 窗口名]

恢复会话:tmux at [-t 会话名]

列出所有会话:tmux ls

关闭指定会话:tmux kill-session -t 会话名

关闭所有会话:tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill

tmux内操作

tmux内命令操作

清空当前窗格缓存区内容:tmux ”clear-history“

杂项

切换出tmux(tmux 仍在后台运行):d

窗口中央显示一个数字时钟:t

列出所有快捷键:?

进入命令行模式: :

快捷键操作

需要注意, 在 Tmux 中,需要按下前缀快捷键 ctrl+b后才能进行其他组合快捷键的使用,
以下操作均是在按下前缀快捷键之后进行操作的 👇

会话

启动新会话::new<回车>

列出所有会话:s

重命名当前会话:$

窗口 (标签页)

创建新窗口:c

列出所有窗口:w

后一个窗口:n

前一个窗口:p

查找窗口:f

重命名当前窗口:,

关闭当前窗口:&

调整窗口排序

交换两个指定的窗口:swap-window -s 3 -t 1 (交换3 号和 1 号窗口)

交换当前和指定窗口:swap-window -t 1 (交换当前窗口和 1 号窗口)

移动当前窗口到指定窗口:move-window -t 1 (移动当前窗口到1号窗口)

窗格(分割窗口)

垂直分割:%

水平分割:"

交换窗格:o

关闭窗格:x

切换布局:Space

显示每个窗格的序号:q (当数字出现的时候按数字几就选中第几个窗格)

与上一个窗格交换位置:{

与下一个窗格交换位置:}

窗格最大化/最小化切换:z

同步窗格

这么做可以切换到想要的窗口,输入 Tmux 前缀和一个冒号呼出命令提示行,然后输入:

:setw synchronize-panes [on/off]

你可以在命令尾部加上on/off来指定功能的开或关, 如果不指定则会在两者之间切换.

该功能仅针对当前操作的窗口有效,不会影响别的会话和窗口。具体的操作请看 👉 国外网友的博客

调整窗格尺寸

可以通过如下操作重调窗格的尺寸 👇

当前窗格向下扩大 1 格 : resize-pane -D

当前窗格向上扩大 1 格 : resize-pane -U

当前窗格向左扩大 1 格 : resize-pane -L

当前窗格向右扩大 1 格 : resize-pane -R

当前窗格向下扩大 n 格 : resize-pane -D n

编号为 2 的窗格向左扩大 n 格 : resize-pane -t 2 -L n

抑或是使用快捷键, 直接对当前窗格使用上下左右键进行调整, 当然这些所有的操作也都是在按下前缀快捷键ctrl+b之后进行才有效

文本复制模式:

按下前缀快捷键后再按下[键即可进入文本复制模式。

此时可以使用上下方向键在屏幕中移动光标, 浏览当前窗格中缓存的历史输出(使用上下方向键是按行浏览, 使用PgUp和PgDn是按页浏览)。默认情况下,方向键是启用的。在配置文件中启用 Vim 键盘布局来切换窗口、调整窗格大小。

Tmux 也支持 Vi 模式。要是想启用 Vi 模式,只需要把下面这一行添加到 .tmux.conf 中:

setw -g mode-keys vi

启用这条配置后,就可以使用 h、j、k、l 来移动光标了。

想要退出文本复制模式的话,按下回车键就可以了。一次移动一格效率低下,在 Vi 模式启用的情况下,可以辅助一些别的快捷键高效工作。

例如,可以使用 w 键逐词移动,使用 b 键逐词回退。使用 f 键加上任意字符跳转到当前行第一次出现该字符的位置,使用 F 键达到相反的效果。

vi             emacs        功能
^              M-m          反缩进
Escape         C-g          清除选定内容
Enter          M-w          复制选定内容
j              Down         光标下移
h              Left         光标左移
l              Right        光标右移
L                           光标移到尾行
M              M-r          光标移到中间行
H              M-R          光标移到首行
k              Up           光标上移
d              C-u          删除整行
D              C-k          删除到行末
$              C-e          移到行尾
:              g            前往指定行
C-d            M-Down       向下滚动半屏
C-u            M-Up         向上滚动半屏
C-f            Page down    下一页
w              M-f          下一个词
p              C-y          粘贴
C-b            Page up      上一页
b              M-b          上一个词
q              Escape       退出
C-Down or J    C-Down       向下翻
C-Up or K      C-Up         向下翻
n              n            继续搜索
?              C-r          向前搜索
/              C-s          向后搜索
0              C-a          移到行首
Space          C-Space      开始选中
               C-t          字符调序

配置选项:

# 鼠标支持 - 设置为 on 来启用鼠标
* setw -g mode-mouse off
* set -g mouse-select-pane off
* set -g mouse-resize-pane off
* set -g mouse-select-window off

# 设置默认终端模式为 256color
set -g default-terminal "screen-256color"

# 启用活动警告
setw -g monitor-activity on
set -g visual-activity on

# 居中窗口列表
set -g status-justify centre

# 最大化/恢复窗格
unbind Up bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp

配置文件(~/.tmux.conf):

# 基础设置
set -g default-terminal "screen-256color"
set -g display-time 3000
set -g escape-time 0
set -g history-limit 65535
set -g base-index 1
set -g pane-base-index 1

# 前缀绑定 (Ctrl+a)
set -g prefix ^a
unbind ^b
bind a send-prefix

# 分割窗口
unbind '"'
bind - splitw -v
unbind %
bind | splitw -h

# 选中窗口
bind-key k select-pane -U
bind-key j select-pane -D
bind-key h select-pane -L
bind-key l select-pane -R

# copy-mode 将快捷键设置为 vi 模式
setw -g mode-keys vi

# 启用鼠标(Tmux v2.1)
set -g mouse on

# 更新配置文件
bind r source-file ~/.tmux.conf \; display "已更新"

#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
# Tmux Plugin Manager(Tmux v2.1)
# Tmux Resurrect
set -g @plugin 'tmux-plugins/tmux-resurrect'

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'git@github.com/user/plugin'
# set -g @plugin 'git@bitbucket.com/user/plugin'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

永久保存tmux会话

利用插件Tmux Resurrect 和 Tmux Continuum可以帮我们永久保存tmux会话(它们均适用于tmux v1.9及以上版本)。具体的操作请查看 👉 网友路易斯的博客, 以及其他更高阶的操作均可以参考该博文.

赘述

本文在该gist该博文上进行总结.