前两天在给另外一个团队帮忙时,看他们在Rails日志、代码文件、git文件系统里面来回穿梭,觉得他们太累了,于是就介绍了 tmux 给他们用。但只讲了一点基本的开窗口、分屏,没给讲太多技巧,因为一下子讲太多也消化不了,还不如让他们自己慢慢学(记得 man tmuxC-b ? 就差不多了)。

不过过了一会儿,小陆问我: 咦,你怎么可以用鼠标将窗口拖大拖小? 我说,”就几个配置而已“,正说要让他到我博客上看详细说明,突然想起:咦,我好像没写过这个? 以前在 ~/.tmux.conf 曾经加过不少配置,后来长期留下来的还没几行,其中就有这个。这么重要的东西我居然忘记记在博客上了——说明已经完全记录在脑袋里面了?

其实就这么几行配置:

setw -g mouse-resize-pane on
setw -g mouse-select-pane on
setw -g mouse-select-window on
setw -g mode-mouse on

这几行的作用分别是:

  • 开启用鼠标拖动调节pane的大小(拖动位置是pane之间的分隔线)
  • 开启用鼠标点击pane来激活该pane
  • 开启用鼠标点击来切换活动window(点击位置是状态栏的窗口名称)
  • 开启window/pane里面的鼠标支持(也即可以用鼠标滚轮回滚显示窗口内容,此时还可以用鼠标选取文本)

这几行配置加到 ~/.tmux.conf 中,然后在tmux里面按 C-b : 执行 source ~/.tmux.conf 即可生效 (也可以直接将这几行放在 C-b : 的输入行去执行,每次执行一行,不过 tmux重启后还得再来一遍)。


什么是window?

就是用 C-b c 创建出来的窗口,每个window跟tmux所在的终端一样大,window里面可以容纳多个pane。

所有窗口的名称显示在底部状态栏上,如下图所示。 有了上面的配置,只要点击窗口名就可以切换到指定窗口了 (快捷键是 C-b n, C-b p, C-b 1 .. C-b 9



(图盗自这里: Increased Developer Productivity with Tmux, Part 2: ~/.tmux.conf)

什么是pane?

就是窗口里面的分屏,可以用 C-b o 来切换到下一个pane,或者用 C-b Up 切换到当前pane上方的pane, 用C-b Down切换到当前pane下方的pane.

还有一种切换方法是 C-b q,tmux会显示每个pane的序号,按这个序号就可以跳过去了(按慢了可不行,得在数字消失前按)。



(本图片盗自: http://www.slideshare.net/lgfang/tmux/14 )

开启了 mouse-select-pane 选项之后, 就可以用鼠标点击面板切换了

用鼠标改变pane的大小

其实前面切换window或者pane,用鼠标并没有太大优势,也就只能略微减轻一点记忆负担。 但用鼠标拖动改变pane的大小这条是比快捷键有优势的,因为用快捷键很难一次调节到位 ,比如是增加6行还是9行? 缩小20列还是40列?而且 还可以斜向拖住交叉点来同时改变多个窗口的大小

附送一条贴士: 最大化/还原pane

  • 如果你用的是tmux >= 1.8,那么可以用 C-b z 来最大化一个pane,想恢复的时候再次按 C-b z 就是了
  • 如果你用的是tmux < 1.8,那么有点复杂,自己看这里: “Maximizing” a pane in tmux

参考

推荐下面两个slides,讲得都很通俗易懂。不过slideshare被蔷了,各位自己想办法吧

最新文章

  1. js自建方法库(持续更新)
  2. iOS 7.1耗电严重解决办法
  3. Android实战技巧:ViewStub的应用
  4. &lt;转&gt;错误 x error LNK1104: 无法打开文件“E:\xxxx\Debug\xxxx.exe”
  5. MSChart参考
  6. 用C#用C#实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码
  7. C#遍历打印机
  8. C# 控件双缓冲控制 ControlStyles 枚举详解
  9. CSS浮动特性总结
  10. python模拟登录人人网
  11. Hibernate输出SQL语句以便调试
  12. GnuWin,包括FLEX BISON GREP
  13. [编辑器]vim常用操作
  14. Android ROM包定制(解包,增删模块,打包)
  15. Docker容器监控(十)--技术流ken
  16. 手推C3算法
  17. ANSYS中的阻尼damper
  18. Asp.Net正则获取链接地址
  19. 通过IP地址进行精准定位
  20. Python学习-购物车程序

热门文章

  1. Dart语言特性必备了解!
  2. golang实现分布式缓存笔记(一)基于http的缓存服务
  3. jackson实现java对象转支付宝/微信模板消息
  4. 【Java】基本I/O的学习总结
  5. SQL 查询存储过程
  6. CRC类(处理ITU表)
  7. Cocos2d-X开发教程-捕鱼达人 Cocos2-x development tutorial - fishing talent
  8. Python数值计算之插值曲线拟合-01
  9. ASP.NET 多次点击button后事件执行多次 并发解决 频繁操作解决办法
  10. jq 回车提交指定按钮