tmux

一、什么Ttmux是什么

Tmux是一款终端复用器(terminal multiplexer),运行在服务器上,非常好用

github 18k star https://github.com/tmux/tmux

1.1 会话(Session)、窗口(Window)、窗格(Pane)

连接linux命令行,打开一个终端窗口,在里面输入命令,这种用户与计算机的交互被称为会话.
典型的SSH登陆服务器,输入命令的过程中,网络断了,再次登陆时,已经回不到上一次会话的过程;或者自己关闭窗口,本次会话也会结束;会话和终端绑定耦合在一起.

我们如果更灵活的做法,就是把会话和窗口解耦合,窗口关闭时,会话仍旧保持.

1.2 Tmux的作用

下图就是Tmux的架构.(我称之为SWP架构)

image

1. Tmux允许窗口新建多个会话(一心多用)
2. Tmux可以"attach"已经存在的会话(继续上次未完成的工作)
3. 允许每个会话有多个连接窗口(独乐乐不如众乐乐)
4. 支持窗口的水平和垂直拆分成窗格(装逼必备)
5. 快捷键用起来很舒服

二、安装

2.1 安装

默认一般不会安装,需要自己手动安装
# RHEL、CentOS、Fedora
sudo yum install tmux

# Ubuntu、Debian
sudo apt-get install tmux

# FreeBSD
pkg install tmux

# Mac 
brew install tmux

2.2 运行

tmux        # 新建一个tmux会话
exit        # 退出会话

2.3 快捷键(记住先同时按ctrl + b,也叫快捷键前缀,有人用prefix指代)

Tmux通过同时按Ctrl + b进入快捷键模式
譬如上面的分离会话,就是先同时按Ctrl+b进入快捷键模式,然后输入d就相当于分离会话

查找快捷键
ctrl + b 进入快捷键模式后,输入?(问号),就会列出所有的快捷键
按esc退出快捷键查找帮助    

三、会话管理

3.1 启动会话

# 新建会话 
# 默认会启动一个编号为0的会话,下次则标号是1,以此类推

tmux

# 指定会话新建名称
# 为了便于记忆一般我们最好是指定名称启动会话
# 启动一个会话名称为tmux的会话
tmux new -s tmux_test

# attach(接入)已存在会话
tmux a -t 0
tmux a -t tmux_test

3.2 查看会话

tmux ls

3.3 退出、分离会话

exit                                # 直接结束当前会话,会话不会保留在后台
tmux detach                         # 分离会话,仍然保留在后台
Ctrl+b d                            # 快捷键分离会话,作用等同 tmux detach

3.4 杀死会话

tmux kill-session -t 0              # 使用会话编号 0
tmux kill-session -t tmux_test      # 使用会话名称 tmux_test

3.5 切换会话

tmux switch -t 0                    # 使用会话编号 0
tmux switch -t tmux_test            # 使用会话名称 tmux_test

3.6 重命名会话

tmux rename-session -t 0            # 使用会话编号 0
tmux rename-session -t tmux_test    # 使用会话名称 tmux_test

3.6 我的一次tmux记录

tmux new -s mysql                   # 新建mysql相关操作会话    
ctrl + b  d                         # 操作中途需要离开,快捷键分离会话
tmux ls                             # 下次上线,查看有哪些会话
tmux a -t mysql                     # 重新接入mysql会话

3.7 会话快捷键

ctrl+b s                          # 列出会话,可进行切换
ctrl+b $                          # 重命名会话
ctrl+b d                          # 分离当前会话
ctrl+b D                          # 分离指定会话

四、窗口(Window)管理

4.1 新建窗口

tmux new-window                     # 新建窗口

tmux new-window -n window_test      # 新建名称为window_test的窗口

4.2 查看窗口

tmux list-windows -a                # 查看所有会话的window
tmux list-windows -t  5             # 查看编号为0的会话的windows

ctrl + b w                          # 进入快捷键模式后,按w

4.3 切换窗口

tmux select-window -t 0             # 切换到编号为0的窗口
tmux select-window -t window_test   # 切换到名称为window_test的窗口

4.4 重命名当前window

tmux rename-window window_rename

4.5 窗口快捷键

ctrl+b c                          # 创建一个新窗口
ctrl+b ,                          # 重命名当前窗口
ctrl+b w                          # 列出所有窗口,可进行切换
ctrl+b n                          # 进入下一个窗口
ctrl+b p                          # 进入上一个窗口
ctrl+b l                          # 进入之前操作的窗口
ctrl+b 0~9                        # 选择编号0~9对应的窗口
ctrl+b .                          # 修改当前窗口索引编号
ctrl+b '                          # 单引号
                                    # 切换至指定编号(可大于9)的窗口
ctrl+b f                          # 根据显示的内容搜索窗格
ctrl+b &                          # 关闭当前窗口

五、窗格(pane)管理

5.1 划分窗格

tmux split-window                   # 划分上下两个窗格

tmux split-window -h                # 划分左右两个窗格

5.2 移动光标

tmux select-pane -U                 # 光标切换到上方窗格

tmux select-pane -D                 # 光标切换到下方窗格

tmux select-pane -L                 # 光标切换到左边窗格

tmux select-pane -R                 # 光标切换到右边窗格

5.3 移动窗格

tmux swap-pane -U                   # 当前窗格上移

tmux swap-pane -D                   # 当前窗格下移

5.4 窗格常用快捷键

Ctrl+b %                            # 划分左右两个窗格。
Ctrl+b "                            # 划分上下两个窗格。
Ctrl+b <arrow key>                  # 光标切换到其他窗格。
                                    # <arrowkey>是指向要切换到的窗格
                                    # 的方向键,比如切换到下方窗格,
                                    # 就按方向键↓。
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>             # 按箭头方向调整窗格大小。
Ctrl+b q                            # 显示窗格编号。

六、命令速查

tmux list-key                       # 查询所有快捷键
tmux list-command                   # 查询所有命令

七、 参考资料

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

https://linuxize.com/post/getting-started-with-tmux/

https://github.com/tmux/tmux

tmux中文使用手册

results matching ""

    No results matching ""