早上刚玩好screen,又发现tmux,一块补补课吧。
总体而言,功能类似,但是看上去tmux更加popular一点。
先看基本玩法
- 打开一个新的session
直接在远程机器上面输入tmux
- 主动退出但是保留session以便将来继续使用:
ctrl-a d
- 查看一下目前有哪些tmux session
leon@mywsssss:~$ tmux ls 0: 1 windows (created Mon Apr 3 20:24:53 2017) [176x41]
最前面的号码是session#
- 重新attach
tmux attach-session
以上命令会默认attach上一个进入的session;
如果想指定某个session进入,那么
tmux attach-session -t 0 (最后这个0,就是tmux ls出来的每一行最前面那个nbr)
以上算是basic了,几个概念就此澄清一下
每次在远端机器执行tmux,都会开启一个新的 “session”,
每个session可以有多个windows;每个windows又可以有多个pane,大致关系如下图(图片来源)
所以,有了如上认识之后,再看下面的快捷键,就会明白很多
- C-b ? 显示快捷键帮助
- C-b C-o 调换窗口位置,类似与vim 里的C-w
- C-b 空格键 采用下一个内置布局
- C-b ! 把当前窗口变为新窗口
- C-b “ 横向分隔窗口
- C-b % 纵向分隔窗口
- C-b q 显示分隔窗口的编号
- C-b o 跳到下一个分隔窗口
- C-b 上下键 上一个及下一个分隔窗口
- C-b C-方向键 调整分隔窗口大小
- C-b c 创建新窗口
- C-b 0~9 选择几号窗口
- C-b c 创建新窗口
- C-b n 选择下一个窗口
- C-b l 切换到最后使用的窗口
- C-b p 选择前一个窗口
- C-b w 以菜单方式显示及选择窗口
- C-b t 显示时钟
- C-b ; 切换到最后一个使用的面板
- C-b x 关闭面板
- C-b & 关闭窗口
- C-b s 以菜单方式显示和选择会话
- C-b d 退出tumx,并保存当前会话,这时,tmux仍在后台运行,可以通过tmux attach进入 到指定的会话
本着够用原则,暂且到此,赶紧干正事去。
最后放几个参考link
- screen& tmux 功能键对照表:http://www.dayid.org/comp/tm.html
- 各种customized config: http://mingxinglai.com/cn/2012/09/tmux/
补充#1 - Pane里面scroll up 历史信息
在~/.tmux.confi里面添加下面
set -g mouse on set -g history-limit 3000 bind -T root WheelUpPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; copy-mode -e; send-keys -M" bind -T root WheelDownPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; send-keys -M"
## Update
Tmux 1.8.4之后,选项变化,比如鼠标选中窗口和resize,换成了下面的
set -g mouse-select-pane on
set -g mouse-resize-pane on
至于和copy-mode的冲突
在windows上面要按住shift;在Mac上面要按住option
more ref:
https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues
https://superuser.com/questions/209437/how-do-i-scroll-in-tmux
补充#2 - 如何更快一步,进入默认pane layout
- 装个东西:dnf install tmuxinator
- 先用tmux把window里面pane的布局layout设置好,用下面命令获取layout配置信息
leon@mywsssss:~$ tmux list-windows
0: leon@localhost:~* (3 panes) [178x41] [layout f9fd,178x41,0,0[179x20,0,0{89x20,0,0,0,89x20,90,0,1},179x20,0,21,2]] @0 (active)
- 编辑下面这个配置文件,把上面的粗体下划线layout信息填入即可
其中default是这个layout的名字,并列的还可以定义其他layout
leon@mywsssss:~$ cat .tmuxinator/default.yml
name: default
root: ~/
windows:
- default:
layout: 7dbd,177x41,0,0[178x20,0,0{88x20,0,0,0,89x20,89,0,1},178x20,0,21,2]
panes:
- clear
- ipython
- clear
- 然后就是用了:注意要用mux default来启动(是的,不是tmux)
- 如果在.bashrc里面加上下面这句,那么每次login之后就可以自动进入这个layout
[ -z "$TMUX" ] && mux default