背景
linux下工作环境,经常见到打开几十个终端,而且不舍得关闭的情况。即使redhat支持终端标签页,redhat支持多个工作区;但仍显得十分混乱。
终端的layout布局位置,不能保存。为了保持操作环境的整洁,经常出现关闭后又一一还原打开的情况。
于是,需要一个可以后台维持的终端工具(这个工具,就是tmux),而且可以存储加载终端的layout布局位置;这样就可以随时调取/隐藏(tmux叫attach/detach),得到期望的并且是当前唯一的终端界面。
另外,网上说,tmux也支持ssh登录界面的保存;这相当于实现了一个功能:一键打开n个ssh操作终端。
主要操作实现
安装
参考:
Tmux 速成教程:技巧和调整
http://blog.jobbole.com/87584/
概念了解
- session(类似一个针对终端的project name)
- window(类似终端的标签页)
- pane(终端的分屏,这个feature挺重要的)
- 复制模式(因为不追求丢弃鼠标的全键盘操作,所以不细看tmux这部分内容了;后来体验几天发现,复制模式还是有必要了解,依靠鼠标,一些操作无法实现)
- tmux最新版[当前使用的是tmux 2.5版本]和老版本的命令,是有区别的,所以百度的很多命令是不适用的。
快捷键
首先,默认终端里,输入tmux,就进入了tmux的界面;tmux的界面与默认终端界面是一致的。只有进入tmux界面,才能使用tmux的快捷键;虽然,默认终端下,也支持tmux操作,但没有快捷键支持啊。
快捷键是可以定制的。
常用快捷键/命令需求 | 描述 |
---|---|
开始tmux | 终端命令:tmux |
ctrl+b | prefix,命令的前缀 |
新建一个session(会话) | 终端命令:tmux new -s projectxxx |
脱离detach当前session | ctrl+b d |
加入attach一个session | 终端命令:tmux attach -t projectxxx |
查看tmux后台的session | 终端命令:tmux ls |
关闭一个session | tmux里直接exit,或者终端命令:tmux kill-session -t projectxxx |
新建一个window | ctrl+b c |
跳转至windows #1 | ctrl+b 1 |
垂直分屏 | ctrl+b % |
水平分屏 | ctrl+b “ |
关闭某个分屏 | 直接exit即可,或者ctrl+b x |
分屏间的光标移动 | ctrl+b 上下左右按键 |
参考:
Tmux常用快捷键以及我会常到的一些问题汇总 - piperck - 博客园
http://www.cnblogs.com/piperck/p/4992159.html
tmux重启后恢复终端layout界面的方法
注意:tmux是不支持重启后恢复终端layout界面的。只要不重启,tmux是一直后台执行的。
当然,我需要tmux在重启后,仍有恢复终端layout的能力。方法参考:
自动给tmux现场做备胎
https://segmentfault.com/a/1190000006232298
唯一需要补充的就是,tmux 插件的安装,ctrl+b r之后,没有任何信息提示,等插件安装完成后,才会有安装已完成的信息。
另外,插件也可以一个个手动安装,也不麻烦。
功能 | 描述 |
---|---|
保存tmux的设置环境 | ctrl+b ctrl+s |
加载tmux的最新设置环境 | ctrl+b ctrl+r |
如果有多个用户,比如admin/qilei等
单独一个tmux,打开多用户的终端,是没有问题。只不过保存恢复的操作,会有问题。解决办法如下:
- 先终端进入期望用户;然后再执行tmux。
- tmux的配置目录,需要复制到各个用户主目录里。
新建windows或者pane(分屏),保留目录路径
bind c new-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind " split-window -c "#{pane_current_path}"
复制模式
Ctrl+b [
进入复制模式,空格标记复制开始,回车结束复制。
同样,适用于终端上下屏幕的移动浏览。按q,就退出复制模式。
Ctrl+b ]
粘贴最后一个缓冲区内容
~/.tmux.conf里增加下句,使复制模式类似vi操作
setw -g mode-keys vi
为了更适应vi操作,
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
unbind-key -T copy-mode-vi v
bind-key -T copy-mode-vi 'v' send -X begin-selection # Begin selection in copy mode.
bind-key -T copy-mode-vi 'C-v' send -X rectangle-toggle # Begin selection in copy mode.
bind-key -T copy-mode-vi 'y' send -X copy-selection # Yank selection in copy mode.
支持鼠标模式
set -g mouse on
这样就可以支持鼠标滚轮/pagedown等普通操作了。
窗口列表居中(否则session和windows名称会重叠)
set -g status-justify centre
其它
刚刚使用,还未考虑更细节的东西。