打造高效前端工作环境 - tmux

前言

 现在前端开发可不容易啊,先打开个VIM,然后再打开个lite-server,一不小心写个ES2015还要打开个gulp来做预编译,如果能把这么多个窗口放在一个工作台上那就好了。咦,tmux不就专干这事的吗?

tmux入门

安装sudo apt install tmux

tmux的C/S架构

服务端(Server), 1个服务端维护1~N个会话;
会话(Session), 1个会话对应1~N个窗口;
窗口(Window), 1个窗口对应1~N个窗格;
窗格(Pane),vim、bash等具体任务就是在窗格中执行。

1.进入tmux
 在shell中执行tmux就会自动创建一个匿名会话、窗口和窗格,而窗格内正在运行着另一个shell程序,这时我们可以像平常使用shell一样来工作。而tmux真正的威力在于对会话、窗口和窗格的管理,但在此之前我们要先了解开启魔法的阀门——快捷键前缀(prefix)。

2.快捷键前缀(prefix)
 tmux为使自身的快捷键和其他软件的快捷键互不干扰,特意提供一个快捷键前缀,默认为Ctrl+b。因此当我们输入任何tmux快捷键前必须先输入Ctrl+b
 由于快捷键前缀是可以重置的,因此后文将以<prefix>来指代快捷键前缀。

3.操作Pane
创建(通过分割当前pane实现)
<prefix> ",水平分割当前pane
<prefix> %,垂直分割当前pane
关闭
<prefix> x,删除当前pane
跳转
<prefix> <up-arrow>/<down-arrow>/<left-arrow>/<right-arrow>, 通过上下左右方向键跳转到对应的pane
<prefix> ;,跳转到上次激活的pane
<prefix> o,跳转到下一个pane
<prefix> q,显示各pane的编号,并输入编号跳转到对应的pane
修改尺寸
<prefix>+alt+<up-arrow>/<down-arrow>/<left-arrow>/<right-arrow>, 通过上下左右方向修改当前pane的高宽
缩放
<prefix> z,缩放当前pane
其他
<prefix> {,将当前pane移动到最左边
<prefix> },将当前pane移动到最右边
<prefix> !,将当前pane转变成window

4.操作Windoiw
创建
<prefix> c,创建window
重命名
<prefix> ,,重命名当前window
注意:由于tmux默认会根据当前pane执行的程序来改变window名称,因此需要在~/.tmux.conf中加入set-option -g allow-rename off来固化window名称。
关闭
<prefix> &,关闭当前window
跳转
<prefix> n,跳转到下一个window
<prefix> p,跳转到上一个window
<prefix> 0...9,跳转到对应的window
其他
<prefix> :swap-window -s 2 -t 1, 调转编号为2和1的两个window的次序
5.操作Session
<prefix> s,显示所有会话
<prefix> $,重命名
<prefix> d,脱离当前会话
<prefix> :kill-session,关闭当前会话
<prefix> (,跳转到上一个会话
<prefix> ),跳转到下一个会话

tmux进阶

1.细抠Session操作
 我们为前端开发环境和后端开发环境分别创建两个Session来独立管理,那么我们就可以灵活地在两个Session间穿梭,并且可以分别和前端、后端开发人员协同工作,下面我们看看相关的命令吧。
$ tmux<prefix> :new, 创建匿名Session
$ tmux new -s mysession<prefix> :new -s mysession, 创建名为mysession的Session
$ tmux kill-session -t mysession,关闭mysession会话
$ tmux kill-session -a,关闭所有会话
$ tmux ls,显示所有会话信息
$ tmux a,附加到最近一个会话
$ tmux a -t mysession,附加到会话mysession

2.多个panes输入同步
<prefix> + :setw synchronize-panes

 这个功能在通过ssh维护多台服务器时十分有用!

3.复制粘贴
 通过tmux我们可以通过纯键盘操作实现跨pane的复制粘贴。首先在~/.tmux.conf文件中添加setw -g mode-keys vi,启用vi键盘方式(hjkl方向键,/?nN搜索)操作buffer内容。
进入复制模式,<prefix> [
开始选择,<Spacebar>
选择结束并将内容复制到新的buffer,<Enter>
取消选择,<Esc>
从buffer_0粘贴到光标位置,<prefix> ]
 可见复制的内容均暂存在buffer中,而tmux也提供直接操作buffer的命令给我们.
<prefix> : show-buffer,显示buffer_0的内容
<prefix> : capture-pane, 保存当前pane的内容
<prefix> : list-buffers, 显示所有buffer内容
<prefix> : choose-buffer, 选择buffer并粘贴
<prefix> : save-buffer buf.txt, 保存buffer内容到but.txt
<prefix> : delete-buffer -b 1, 删除buffer_1的内容

4.美化状态栏
 默认的tmux样式有点丑,而https://github.com/gpakosz/.tmux这个配置则为我们提供漂亮状态栏.

深入Layout

内置Layout

 tmux为我们内置了5种布局类型
even-horizontal,从左至右平均分布所有pane
even-vertical,从上至下平均分布所有pane
main-horizontal,最上方的pane为主工作区,其余pane位于最下方且从左至右排列
main-vertical,最左边的pane为主工作区,其余pane位于最右边且从上至下排列
tiled,从上至下,从左至右平均分布所有pane
 对于main-horizontal和main-vertical布局而言,我们还可以设置主工作区的尺寸

# .tmux.conf
set-window-option -g main-pane-width 100
set-window-option -g main-pane-height 100

自定义Layout

 其实更多的时候,我们工作区的布局远比内置的复杂。如下左上角为编辑区,右上角为UnitTest回显,最下面是REPL。
 这时我们就要先调整好window内所有pane的尺寸,然后脱离当前session,获取当前window的布局信息了。

tmux list-windows

将最后一个]前的内容复制到tmuxinator的yml配置中的layout那,注意pane数量要和layout的布局信息数据一致。

总结

 尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/6057050.html ^_^肥仔John

打造高效前端工作环境 - tmux相关推荐

  1. 打造高效前端工作环境-tmuxinator

    前言  虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口.窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口.窗格和各种所需执行的程序的信息呢?tmuxinato ...

  2. 打造高效的工作环境 – SHELL 篇

    注:本文由雷俊(Javaer/Emacser)和我一起编辑,所以文章版权归雷俊与我共同所有,转载者必需注明出处和我们两位作者.原文最早发于酷壳微信公众号,后来我又做了一些修改,再发到博客这边. 程序员 ...

  3. 高效 MacBook 工作环境配置

    高效 MacBook 工作环境配置 作者:正鹏 & 隃墨  来源:http://www.xialeizhou.com/?p=71 工欲善其事,必先利其器,工具永远都是用来解决问题的,没必要为了 ...

  4. mac 高效MacBook工作环境配置

    本文记录整个配置过程,供新入手MacBook和觉得MacBook比较难用的同学参考. 1. 硬件提升 笔记本电脑的特点是携带方便,缺点是屏幕太小,因此你首先需要再申请领用一个外接显示器,多一个屏幕会大 ...

  5. windows 前端工作环境搭建指北

    前言 这篇文章是面向那些想要使用命令行开发,却又不想放弃 windows 的童鞋 工作这几年,虽然也有在服务器上用 vim 开发的经验,但是个人的工作环境一直是 windows,要说为什么,一个是不太 ...

  6. 高效 MacBook 工作环境配置,超实用!

    作者:正鹏 & 隃墨 http://www.xialeizhou.com/?p=71 工欲善其事,必先利其器,工具永远都是用来解决问题的,没必要为了工具而工具,一切工具都是为了能快速准确的完成 ...

  7. Linux技巧--打造高效工作环境

    程序员是一个很懒的群体,总想着能够让代码为自己干活,他们不断地把工作生活中的一些事情用代码自动化了,从而让整个社会的效率运作地越来越高.所以,程序员在准备去优化这个世界的时候,都会先要优化自己的工作环 ...

  8. 打造高效的SHELL工作环境

    程序员是一个很懒的群体,总想着能够让代码为自己干活,他们不断地把工作生活中的一些事情用代码自动化了,从而让整个社会的效率运作地越来越高.所以,程序员在准备去优化这个世界的时候,都会先要优化自己的工作环 ...

  9. 打造前端 Deepin Linux 工作环境——安装最新版本的火狐firefox浏览器

    打造前端 Deepin Linux 工作环境--安装最新版本的火狐firefox浏览器 尝试使用 apt-get 命令安装火狐浏览器,但是,居然是 55 的版本,而最新的已经是 56 了.当然,这并不 ...

最新文章

  1. python下载文件到本地-python从下载链接下载文件到本地
  2. python反射和高阶内置方法
  3. js 字符串替换的问题
  4. 台式计算机计量单位,计算机的计量单位以及常见的数据类型
  5. python/sklearn 生成分类、回归的数据
  6. 7大排序算法详解+java实现
  7. (转)Ubuntu下JDK7安装全过程并调试第一个带包的java程序
  8. 如何使用Navicat MySQL导入.sql文件
  9. 史上最全macos安装xgboost教程
  10. java 判断session失效_session过期时间设置和判断session是否过期
  11. idea插件开发入门
  12. cesium-模型处理(FBX2GLTF)
  13. 苹果手机注册时显示链接服务器出现问题,苹果连接服务器出现问题怎么办_苹果id连接到服务器时出现问题的解决方法...
  14. 计算机无法还原,win7系统不能还原如何解决_win7电脑无法还原系统怎么办-win7之家...
  15. 黑暗星空中的秘密——《黑暗森林》简评
  16. erlang 单元测试
  17. 独家 | 当热钱不再涌动——2019人工智能行业冷暖观察
  18. PowerShell 将对象转换成文本
  19. scanf 之 %2s 与 %2d
  20. 华为服务器网口ip配置文件,服务器远程ip配置文件

热门文章

  1. html报错页面,多页面配置生成的html报错
  2. python round保留小数位_Python-其他-round()保留小数位时遇到的问题
  3. keyshot卡住了还能保存吗_KeyShot常见问题汇总及解答(附图)!
  4. 若依前后端分离集成Mybatis-Plus
  5. 前后端分离的用户验证原理及Spring Boot + JWT的框架搭建(附完整的框架代码)之一
  6. Linux的文件压缩与解压缩
  7. [设计模式-创建型]单态(Singleton)
  8. python中breakpoint什么意思_it/breakpoint是什么意思
  9. php 重定向 post,使用Jquery post时PHP不会重定向
  10. js 取得input绑定的datalist中的值_原生JS写一个ToDo Demo