tmux 终端复用神器
Contents
tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.
基本概念
tmux 是一个终端管理,多终端分屏软件,将终端窗口组合视为工程(回话),同时还解决了 SSH 超时 broken pipe 的问题,配合 zsh、vim 就是神器,同一个会话可以被多人打开,实现教学同步演示的目的,tmux 主要包括以下几个概念:
- session 会话:一个服务器可以包含多个会话
- window 窗口:一个会话可以包含多个窗口
- pane 面板:一个窗口可以包含多个面板
运用上面的会话、窗口、面板可以打造一个可以移动的“终端 IDE”,类似的终端复用工具还有如 screen。在 windows 上建议使用 mintty,mintty 和 tmux 的下载安装,具体参考之前的关于 MSYS2 的文章,对于 Linux 和 Mac 来说终端软件就随意了,安装的话使用该平台的包管理就可。
会话管理
在终端里使用 tmux 命令可以新建或者进入会话。
tmux
开始一个新 tmux 会话tmux new -s myname
开始一个名为 myname 的 tmux 会话,也可以新建然后从新命名tmux a -t myname
打开 (attache) 名为 myname 的 tmux 会话tmux a #num
打开 (attache) 编号为#的 tmux 会话tmux ls
列出所有的 tmux 会话tmux kill-session -t myname
清除名为 myname 的 tmux 的会话tmux kill-server
删除所有的会话
注意 tmux 的 detach 是后台运行,所以当关机后就会丢失,如果要持久化可以采用 tmux-resurrect 插件来完成。
基础命令
在一个 tmux 会话里,唤醒 tmux 的命令是需要前缀命令的,tmux 的默认前缀命令是 Ctrl+b
,下文所有命令的默认前缀命令 Ctrl+b
为了篇幅,都是已经忽略了的。
?
列出所有快捷键;按 q 返回d
脱离当前会话,可暂时返回 Shell 界面,输入 tmux attach 能够重新进入之前会话s
选择并切换会话;在同时开启了多个会话时使用D
选择要脱离的会话;在同时开启了多个会话时使用:
进入命令行模式;此时可输入支持的命令,例如 kill-server 所有 tmux 会话[
复制模式,光标移动到复制内容位置,空格键开始,方向键选择复制,回车确认,q/Esc 退出,复制模式下即可以通过上下键来滚动屏幕]
进入粘贴模式,粘贴之前复制的内容,按 q/Esc 退出~
列出提示信息缓存;其中包含了之前 tmux 返回的各种提示信息t
显示当前的时间r
刷新 (reload)#
显示 copy 的 buffer 历史=
选择 copy 的 buffer
会话 session
s
查看/切换 sessiond
离开 session (detach)$
重命名会话
窗口 window
c
创建新窗口 (create)&
关闭当前窗口,
重命名窗口w
查看所有 session 和下面的 window 及下属的 panel[num]
使用窗口号切换.
窗口编号f
所有窗口中查找关键词p
切换到先前的窗口n
切换到下一个窗口
窗格 pane
%
左右平分出两个窗格"
上下平分出两个窗格z
最大化当前窗格,再次执行可恢复原来大小,配合 vim 很爽x
关闭当前窗格q
显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格方向键
根据方向键跳转一个窗格o
循环切换 panespace
切换窗格布局,tmux 内置了五种窗格布局;
选择上次使用的窗格
pane 调整快捷键。
{
当前窗格位置前移}
当前窗格位置后移!
将当前窗格升级为窗口Ctrl + 方向键
移动边缘以调整当前面板大小Alt + 方向键
以 5 个单元格为单位移动边缘以调整当前面板大小
状态栏
一般默认的格式和对应的配置名如下:
|
|
配置文件
一般 tmux 的配置会放在 ~/.tmux.conf
下,配置完成后需要使用 tmux source-file ~/.tmux.conf
命令来完成刷新设置,总的来说我建议不要修改已有的快捷键,当机器多了之后会导致混淆,参考配置。
@import “/Snippets/dotfile/tmux.conf”
对上面的配置文件的一些解释:
tmux 如果嵌套了,按几次
ctrl+b
就是进入嵌套层次的次数,如按两次ctrl+b
。最好的方式还是使用配置文件来解决,也就是给出的配置的注释# nested
的部分,配置之后按 F12 即切换外围 tmux 的 prefix 的传入,来源参考文末的连接。建议在本地的机器上用,全套的配置。远程的机器用
# my theme
注释以上的简单配置,以加以区分。配置里面是能使了鼠标的,也就是可以使用鼠标切换 Pane 和 Windows,也能使用鼠标调整 pane 的大小,滚轮上下查看历史等功能,鼠标选择文本等功能。
一般来说 tmux 的复制会比麻烦,折腾起来也麻烦,建议的是直接用终端软件的文本选择模式如 mintty 是按住 shift 键用鼠标选择,iterm2 是按住 option 键用鼠标选择。
使用问题
- 有时 tmux 里的颜色会不太正常,在 shell 初始化脚本里面加入如
export TERM=xterm-256color
。参考colors