简单的说,tmux给你的terminal会话提供了分组,保存,拆分,切换,标记等等方便的功能,对于经常在term上工作的有很大的帮助, 比如你经常要开个vim,连接个服务器,还要起一个调试的console,一个运行server的日志窗口,如果一辈子不关机,不掉线应该问题不大, 但是不可能,所以,tmux的作用就出来了. 好比你每天打开浏览器,需要打开邮件,新闻,twitter,facebook,stackoverflow,还有上次没有看完的一些tab, 这个时候有个保存会话的功能该有多好,每次打开浏览器点击一个按钮,我定制的tab就全部自动打开,tmux就是运维和在terminal上工作的人的效率工具.
安装
我用的osx,比较简单直接brew install tmux就可以了,如果你没有安装libevent可以先brew install libevent
体验
tmux
就打开了一个会话
概念
- session 会话,一组窗口的集合,通常用来概括同一个任务。session可以有自己的名字便于任务之间的切换
- window 窗口,单个可见窗口。Windows有自己的编号
- pane 块,窗格,一个窗口可以利用窗格来划分成多个窗格
命令
tmux new-session新建会话tmux new-session -s writing新建会话,并命名tmux new-session -s writing -d在后台创建会话,并命名
tmux list-sessionortmux ls列出所有会话tmux attach -t 数字或者名字进入并恢复会话tmux kill-session -t 数字或者名字关闭会话tmux kill-server关闭tmux服务
会话内的操作
prefix默认是<C-b>,下面的命令都是在键入prefix之后的操作
"将窗口垂直平分为上下两个窗格pane#列出所有的剪贴板$重命名当前会话%将窗口水平平分为左右两个窗格&关闭当前窗口'以提示的方式,等待用户输入编号来切换窗口(切换到上一个会话)切换到下一个会话,重命名当前窗口-Delete the most recently copied buffer of text..用编号来切换窗口,在提示下输入编号0 to 9按编号切换窗口:进入tmux的命令提示符,和vim类似;进入上一个pane=选择一个buffer来进行粘贴?列出所有的key bindD选择一个客户端,让其断线L将连接的客户端切换到最后一个会话[进入粘贴模式,或者查看历史]粘贴最后一次拷贝的内容c创建新的窗口d断开当前的客户端连接,退出的意思f在所有打开的窗口搜索你再提示符里输入的字符串i显示当前窗口的信息在底部l移动到上一个选择的窗口n切换到下一个窗口o切换到当前窗口的下一个pane和;相反p切换到上一个窗口q显示当前窗口所有pane的编号r强制重画当前连接的客户端m标记当前的pane,(see select-pane -m).M清除pane的标记s列出所有会话,可以选择一个进行切换t显示当前时间w在当前窗口显示所有窗口的信息,可以进行选择切换x提示是否关闭当前panez最大化当前pane{将当前pane和上一个pane切换}将当前pane和下一个pane切换~显示tmux的日志信息Page UpEnter copy mode and scroll one page up.上下左右切换paneSpace将pane进行重新排列,有多种方式
注意事项
如果你的vim的配色在tmux下不能正常显示,在vimrc里加上
if exists('$TMUX')
set term=screen-256color
endif
合并窗口面板
如果你开了两个窗口,需要显示在一个窗口下,变成2个pane时候
# 先开启命令模式 pre : , 我这里是<Ctrl-b> + :
join-pane -s 1.0 # 意思是 把1号窗口里的pane0 移到窗口0里
join-pane -s 1:2.3 # 意思是把session1的窗口2的pane3移过来
会话保存
- C-B C-S 保存
- C-B C-R 恢复