tmux - 终端多路复用器 / 应用服务管理器(误)
tmux
意为 terminal multiplexer (终端多路复用器),它允许用户在终端中使用多个虚拟终端,支持多会话、多窗口、布局等功能。
安装
Arch Linux:
$ sudo pacman -S tmux
Ubuntu/Debian 系:
$ sudo apt install tmux
0x01 基本操作
创建并进入新的 tmux 会话 (session):
$ tmux
此时会看到用户默认的 shell 运行在 tmux 虚拟终端里,可以像往常一样在里面运行命令。
创建新窗口(标签页):C-b c
(Ctrl+B 然后按一下 C)
C-b
(Ctrl+B) 是 tmux 默认的命令前缀 (prefix),通常后跟一个别的按键执行一个 tmux 命令。
窗口内的程序(通常是一个 shell)结束运行后,窗口会自动关闭。在大部分交互式 shell 中可以按 ^d
或者运行 exit
结束 shell 的运行。
断开会话:C-b d
tmux 会话被断开后,虚拟终端会在后台保持运行,其中运行的程序不会受到影响。
连接会话:
$ tmux a
或
$ tmux attach
0x02 开启鼠标支持
开启方式
在配置文件中打开鼠标支持:
sudo echo 'set -g mouse on' >> /etc/tmux.conf
或者通过 tmux 命令临时打开:
两种方式:(1) 在 tmux 环境中执行 shell 命令 tmux set mouse on
;(2) 或者按下 C-b :
,然后输入 set mouse on
并回车。
鼠标功能
- 鼠标点击切换 tab/panel
- 鼠标滚轮查看历史
- 鼠标选择复制
- ……
0x03 常用快捷键
C-b ?
列出快捷键
C-b :
开始输入 tmux 内置命令
窗口:
C-b c
创建窗口
C-b [数字]
切换到对应的窗口
C-b ,
重命名窗口
会话:
C-b d
断开会话
C-b s
列出会话 (支持同时运行多个会话)
C-b D
列出客户端 (大写的 D
表示按 Shift+D)
(tmux 支持多个客户端共享会话,快和小伙伴们通过 ssh 一起 tmux a
吧!)
布局:
C-b "
上下切割
C-b %
左右切割
C-b [方向键]
在当前窗口中切换当前面板
C-b C-[方向键]
调整当前面板的大小
查看历史/剪贴操作 (复制模式):
C-b PgUp
切换到复制模式并向上滚动
C-b [
切换到复制模式
C-b ]
输入 tmux 剪贴板中的内容到当前窗口
复制模式:q
退出,PgUp
/PgDown
/[方向键]
移动光标,C-[空格]
开始选择文本,C-w
结束选择文本并复制。
0x04 开机自启动 / 应用服务管理器
跟随用户启动
创建文件 ~/.config/systemd/user/tmux-startup.service
(systemd 用户服务)
[Unit]
Description=Tmux Startup
[Service]
ExecStart=%h/bin/tmux-startup
Type=forking
[Install]
WantedBy=default.target
创建文件 ~/bin/tmux-startup
并 chmod +x
#!/bin/bash
# 创建 "startup" 会话,初始窗口名为 "my-app"
tmux new-session -d -s "startup" -n "my-app"
# 向 "my-app" 窗口输入 "/usr/bin/my-app" 并回车
tmux send-keys -t "my-app" "/usr/bin/my-app" C-m
启用 "tmux-startup" systemd 用户服务:
$ systemctl --user enable tmux-startup
跟随系统启动
创建文件 /etc/systemd/system/tmux-startup.service
(systemd 系统服务)
[Unit]
Description=Tmux Startup
[Service]
ExecStart=/home/THE_USER/bin/tmux-startup
WorkingDirectory=/home/THE_USER/
User=THE_USER
Type=forking
[Install]
WantedBy=default.target
创建文件 /home/THE_USER/bin/tmux-startup
并 chmod +x
(同“跟随用户启动”)
启用 "tmux-startup" systemd 系统服务:
$ sudo systemctl enable tmux-startup