对于程序员来说,一个好用且高效的软件工具就如同加持了神技的游戏角色。下面就给大家介绍一个神器 Tmux 以及个人的使用总结。

一、我所认识的 Tmux

在工作中,我把 tmux 当作终端会话管理器来使用,效果是:当前 shell 关闭后,只要不重启服务器,在 Tmux 会话里运行的指令就不会退出,对于运维及研发来讲,此工具掌握后,有助于提高工作效率!而且,逼格也不低哦。

二、Tmux会话

一个 Tmux 会话中可以包含多个窗口。会话功能非常简单易用,例如可以为一个特定的项目创建一个专用的 Tmux 会话。若要创建一个新的会话,只需要在终端运行如下的命令:

tmux new -s <name-of-my-session>

假设我还需要开发另一个项目,于是我就会为此再新建一个会话。虽然进入了新的会话,但是原来的会话并没有消失。所以我可以在稍后回到之前的会话继续工作。若要创建一个新的会话,只需要按下 Ctrl-b : ,然后输入如下的命令:

new -s <name-of-my-new-session>

三、Tumx切换

若要获取现有会话的列表,可以按下 Ctrl-b s。下图所示的就是会话的列表

列表中的每个会话都有一个 ID,该 ID 是从 0 开始的。按下对应的 ID 就可以进入会话。如果你已经创建了一个或多个会话,但是还没有运行 Tmux,那么可以输入如下命令以接入已开启的会话。

tmux attach

tmux下无法滚屏很烦人。 
一招即可解决: CTRL + B 再按 [,这时就可以用光标键来操作翻页滚屏 
如果需要兼容vim的操作方式,那么在~/.tmux.conf加上一行:

setw -g mode-keys vi

四、进阶神器“Tmuxinator”

Tmuxinator 是一个 Ruby 的 gem 包,可用于创建 Tmux 的会话。它的工作方式是先在配置文件中定义会话中的细节,然后用 1 条命令创建出这些会话。下面就让我们看看如何安装 Tmuxinator 以及如何添加配置来为指定项目开启一个会话。可以通过运行如下命令安装 Tmuxinator 的 gem 包。

$ yum install ruby -y
$ gem install tmuxinator

下面就让我们为上述的应用程序(有 3 个窗口,分别是“PythonServer”, “PythonShell” 和 “Mysql”)来创建一个配置文件吧。下面这条命令的作用是为这个项目创建并打开一个配置文件。

$ tmuxinator new project_a

按下回车键后,就会自动打开文件 ~/.tmuxinator/project_a.yml。为了实现项目 A 所需的配置,你需要把 project_a.yml 的内容更新为:

cat /root/.tmuxinator/project_a.yml

name: project_a
root: ~/

windows:
  - PythonServer: 'python /opt/project/cmdb/manage.py runserver 0.0.0.0:8000'
  - PythonShell: 'python /opt/project/cmdb/manage.py shell'
  - Mysql: 'mysql -uroot -p123123'

一旦将上面的配置添加到了项目 A 的 Yaml 文件中,只需要运行下面这条命令就可以启动 Tmux 的会话了。

$ tmuxinator start project_a

当然如果愿意的话,你也可以使用 Tmuxinator 命令的别名:

alias mux=tmuxinator
mux start project_a

大功告成了。现在,每当想进入项目 A 的编码工作时,就只需要运行 Tmuxinator 命令。

五、最后

C-b c 创建一个新的窗口

C-b n 切换到下一个窗口

C-b p 切换到上一个窗口

C-b l 最后一个窗口,和上一个窗口的概念不一样哟,谁试谁知道

C-b w 通过上下键选择当前窗口中打开的会话

C-b 数字 直接跳到你按的数字所在的窗口

C-b d 临时断开会话 断开以后,还可以连上的哟:)

C-b " 分割出来一个窗口

C-b % 分割出来一个窗口

C-b o 在小窗口中切换

C-b (方向键)

C-b ! 关闭所有小窗口

C-b x 关闭当前光标处的小窗口

C-b t 钟表

C-b , 重命名当前窗口;这样便于识别

安利一个神器:Tmux的更多相关文章

  1. linux开发神器--Tmux

    在Linux上工作的朋友,可能会常常遇到这种情况: 痛点1: 在公司用putty连着Linux开发机,程序正跑着,不知不觉到了下班的时候,要和老婆/女朋友约会了,但是程序还没跑完,并且进度有点紧,还得 ...

  2. (转载)Linux终端复用神器-Tmux使用

    Linux终端复用神器-Tmux使用 转载地址:https://blog.51cto.com/652465/2094738 Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于Open ...

  3. [原创]安卓使用Termux做渗透测试(演示sqlmap安装,并附上一个神器)

    由于手机kali太大,并且MIUI8+Android6.0的我.用手机kali不是太方便(懒得捣鼓),所以另找道路,用手机作渗透测试. 1.下载一个Termux,并授予ROOT权限. 2.打开之后输入 ...

  4. 安利一个vps,7美元/年。

    黑色星期五.给大家安利一个vps,7美元/年.配置如下:2 个虚拟化 CPU 2 GB (2048 MB) 专属内存 50 GB RAID-10 受保护硬盘存储 3000 GB (3TB) 月流量 1 ...

  5. 安利一个很火的 Github 滤镜项目

    安利一个很火的 Github 滤镜项目 园长 1 个月前 简评:通过深度学习,一秒钟让你的照片高大上,这是康奈尔大学和 Adobe 的工程师合作的一个新项目,通过卷积神经网络把图片进行风格迁移.项目已 ...

  6. 安利一个免费下载VIP文档神器

    今天安利给大伙一个非非非常好用的可以免费下载VIP文档的下载神器------冰点文库下载器,用过的人都说好.操作简单,小巧轻便,完全免费.支持百度.豆丁.畅享.mbalib.hp009.max.boo ...

  7. 安利一个MVC的好东西,RazorGenerator.MsBuild,可以自动编译cshtml文件

    在传统的asp.net webForm 开发里,在发布时,如果选择预编译,就会自动将所有的aspx 文件编译,在发布后的目录里,就看不到aspx的源代码了,同时因为是预编译的,所以每个页面打开速度都挺 ...

  8. Linux终端复用神器-Tmux使用梳理

    Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“ ...

  9. 安利一个十分实用的IDEA插件--RestfulToolkit

    官网链接:http://plugins.jetbrains.com/plugin/10292-restfultoolkit,英汉双语的帮助文档. 一套 RESTful 服务开发辅助工具集. 1.根据 ...

随机推荐

  1. Python核心编程笔记--私有化

    一.私有化的实现 在Python中想定义一个类是比较简单的,比如要定义一个Person类,如下代码即可: # -*- coding: utf-8 -*- # __author : Demon # da ...

  2. git强制push

    Git 如何强制push? $ git push -u origin master –f   文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing 欢迎关注,有 ...

  3. mysql启动日志文件log_bin

    今天正在无所事事的时候,突然收到需要我打开mysql的log_bin,当时我就懵逼了...不多说别的,我连这个log_bin在哪里,怎么知道是否启动了都不知道,怎么去做? 在万分纠结下,查询了很多资料 ...

  4. 第十七章:Python の Web开发基础(四) MVC与Django

    本課主題 MVC 介绍 Django 介紹 MVC 介绍 controllers 处理用户请求 views 放置HTML模版 models 操作数据库 MVC框架就是目录的归类 MVC 是一种软件开发 ...

  5. 微信小程序<web-view>嵌入网页后,小程序如何和网页交互传值?

    最近开发一个项目由于小程序某些组件的限制,然后想到嵌入网页,但是遇到一个问题:网页端调取数据的时候需要 小程序传递多个参数值才能用,如何传值呢? 最初我想到是<web-view src=&quo ...

  6. Python 抽象篇:面向对象之高阶用法

    1.检查继承 如果想要查看一个类是否是另一个类的子类,可以使用内建的issubclass函数 如果想知道已知类的基类,可以直接使用特殊特性__bases__ 同时,使用isinstance方法检查一个 ...

  7. 6.while loop

    while 循环   有时候我们不确定需要循环几次.就像一个司机不知道自己需要什么时候加油一样.程序可以这样写:   while petrol_filling: increase price show ...

  8. python 中__setattr__, __getattr__,__getattribute__, __call__使用方法

    object._getattr_(self, name) 拦截点号运算.当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法.如果继承树可以找到该属性,则不调用此方法 实例in ...

  9. Babel 转码器 § es6转换es5

    Babel 转码器 § es6转换es5 实时转码 /  Repl  -babel-node / babel-register(自动转码引入babel-register模块) 配置文件.babelrc ...

  10. 千万别在开发阶段用 uglify 插件了!(from Requirejs to Webpack)

    webpack 各种好用,打算把 sf.gg 的前端构建工具从 gulp+requirejs 尝试着迁移到 webpack,没想到刚迈出第一步随即翻车. 因为 sf.gg 本质是个后端路由项目,每个页 ...