0%

Linux之tmux快速入门

Tmux 可以让你在一个屏幕中管理多个终端窗口。比如像下面这样,左边写代码,右边查看某程序运行情况。接下来就讲讲tmux快速入门指南。

NLLX4O.png

基本概念

tmux中有3种概念,会话,窗口(window),窗格(pane)。一个会话可以包含多个窗口,一个窗口可以被分割成多个窗格(pane)。会话有点像是tmux的服务,在后端运行,我们可以通过tmux命令创建这种服务,并且可以通过tmux命令查看,附加到后端运行的会话中。

tmux架构

session

tmux 是被设计为 cs 结构的。因此当你启动 tmux 的时候, 实际上你启动的是 tmux 的 client。
服务端可能也在你的电脑上或者其他服务器上,总之要连接 client 和 server, 就需要一个 session。一般来说一个 session 对应一个 project。

window

一个 session 包含多个 window,这里的 window 比较类似一般 terminal 模拟器的 tab。

pane

一个 window 可以被分割为多个 pane,方便同时查看多个进程的状态。

基本操作

会话操作

  1. 新建会话

    tmux new -s [会话名]

    新建一个会话(session)后,在会话中会生成一个默认窗口(window),默认窗口中有一个默认窗格(pane)铺满整个窗口区域。

  2. 退出会话

    ctrl+b d ( 即先同时按下ctrl和b,松开再按d)

  3. 查看会话列表

    tmux ls

    如果是在某个会话环境中想查看会话列表,可以用以下指令来获得,然后用键盘选择就可进入

    ctrl+b s

  4. 进入会话

    tmux a -t [会话名]

  5. 销毁会话

    tmux kill-session -t [会话名]

  6. 重命名会话

    tmux rename -t [旧会话名] [新会话名]

窗口操作

一个tmux的会话中可以有多个窗口(window),每个窗口又可以分割成多个pane(窗格)。我们工作的最小单位其实是窗格。默认情况下在一个window中,只有一个大窗格,占满整个窗口区域。我们在这个区域工作。

  1. 新建窗口

    ctrl+b c

    默认情况下创建出来的窗口由窗口序号+窗口名字组成,可以看到新创建的窗口后面有*号,表示是当前窗口。

  2. 切换窗口

    在同一个会话的多个窗口之间可以通过如下快捷键进行切换:

1
2
3
4
5
ctrl+b p (previous的首字母) 切换到上一个window。
ctrl+b n (next的首字母) 切换到下一个window。
ctrl+b 0 切换到0号window,依次类推,可换成任意窗口序号
ctrl+b w (windows的首字母) 列出当前session所有window,通过上、下键切换窗口
ctrl+b l (字母L的小写)相邻的window切换
  1. 关闭窗口

    ctrl+b &

窗格操作

tmux的一个窗口可以被分成多个pane(窗格),可以做出分屏的效果。

  1. 垂直分屏

    ctrl+b %

  2. 水平分屏

    ctrl+b "

  3. 切换窗格

1
2
3
4
ctrl+b o 依次切换当前窗口下的各个pane。
ctrl+b Up|Down|Left|Right 根据按箭方向选择切换到某个pane。
ctrl+b Space (空格键) 对当前窗口下的所有pane重新排列布局,每按一次,换一种样式。
ctrl+b z 最大化当前pane。再按一次后恢复。
  1. 关闭窗格

    ctrl+b x 关闭当前使用中的pane,操作之后会给出是否关闭的提示,按y确认即关闭。

配置文件

tmux的配置文件是~/.tmux.conf,这个文件可能不存在,可以自己新建。配置文件可以用来更改默认的操作方式,设置为你喜欢的键位。

示例文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
set -g prefix C-x # prefix C-x
unbind C-b # C-b即Ctrl-b键,unbind意味着解除绑定
bind C-x send-prefix # 绑定Ctrl+x为新的指令前缀
# 从tmux v1.6版起,支持设置第二个指令前缀
set-option -g prefix2 ` # 设置一个不常用的`键作为指令前缀,按键更快
# 绑定快捷键r
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"
unbind '"'
bind - splitw -v # 垂直方向新增面板,默认进入当前目录
unbind '%'
bind | splitw -h # 水平方向新增面板,默认进入当前目录

bind -r k select-pane -U # 绑定prefix+k为↑
bind -r j select-pane -D # 绑定j为↓
bind -r h select-pane -L # 绑定h为←
bind -r l select-pane -R # 绑定l为→

bind -r e lastp # 选择最后一个面板
bind -r ^e last # 选择最后一个窗口

bind -r ^u swapp -U # 与前一个面板交换位置
bind -r ^d swapp -D # 与后一个面板交换位置

# 绑定prefix Ctrl+hjkl键为面板上下左右调整边缘的快捷指令
bind -r ^k resizep -U 10 # 绑定Ctrl+k为往↑调整面板边缘10个单元格
bind -r ^j resizep -D 10 # 绑定Ctrl+j为往↓调整面板边缘10个单元格
bind -r ^h resizep -L 10 # 绑定Ctrl+h为往←调整面板边缘10个单元格
bind -r ^l resizep -R 10 # 绑定Ctrl+l为往→调整面板边缘10个单元格

setw -g mode-keys vi # vi风格选择文本
# bind escape copy-mode # 绑定esc为进入复制模式
bind -t vi-copy v begin-selection # 绑定v键为开始选择文本
bind -t vi-copy y copy-selection # 绑定y键为复制选中文本
bind p pasteb # 绑定p键为粘贴文本(p键默认用于进入上一个窗口,不建议覆盖)

以上是tmux的快速入门,即最常用到的tmux功能及快捷方式,更全的指令以及更详细的介绍可以参考tmux常用命令tmux终端复用详解

参考:https://blog.csdn.net/zong596568821xp/article/details/83785387