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