linux开发神器--Tmux
在Linux上工作的朋友,可能会常常遇到这种情况:
痛点1: 在公司用putty连着Linux开发机,程序正跑着,不知不觉到了下班的时候,要和老婆/女朋友约会了,但是程序还没跑完,并且进度有点紧,还得把工作带回家,怎么办?
如果断开网络,putty就会断,无法看到程序跑的怎么样了。
痛点2: 在Linux上用Vim写着代码,想调试一下。要么保存代码-->退出-->编译。要么再开一个Terminal窗口,调试的时候要两个窗口来回切,好麻烦!
此时就需要神器Tmux。
Tmux是什么呢?
Tmux 是一个工具,用于在一个终端窗口中运行多个终端会话。不仅如此,你还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话,这个功能非常实用。
如何安装Tmux?
在Ubuntu上安装Tmux很简单,只需要执行命令:
sudo apt-get install tmux
即可。
如何使用Tmux?
网上关于Tmux的教程其实有很多,我只把实际工作中最实用的部分列出来。
先列一个Tmux最重要的快捷键:"ctrl+b"。
Tmux为了使其快捷键不与Vim以及操作系统等的快捷键冲突,设置了一个“快捷键前缀”的概念。也就是说,当我们使用Tmux任何快捷键的时候,都必须先按"ctrl+b"。
针对使用过程,首先明确一下Tmux里的几个概念:会话、窗口、窗格。
我们不去拗口的讲这三个概念是什么意思,直接实际操作起来,让你理解。
使用Tmux,必须首先创建会话。创建方法:
tmux new -s 你指定的会话名
创建成功后,会进入你创建的会话。
针对痛点1:
如果这时候我们正跑着代码,需要断网了。此时只需要按快捷键"ctrl+b",然后再按一下"d"。也就是"ctrl+b"和"d"的组合,就从这个会话中退出了。
但是退出并不意味着结束,当我们回到家,重新用putty连上Linux,仍然可以回到这个"会话"(也就是这个工作状态)当中来。
通过命令"tmux ls",我们能够看到目前系统中有哪些会话。
而命令"tmux a -t 你要进入的会话名",就可以实现回到"会话"的功能。
你会发现,上次断网之前的工作状态被好好的保存着,可以继续工作啦。
针对痛点2:
我们回到会话中。想再写代码的同时调试怎么办?
Tmux可以实现窗口分屏功能:
快捷键:"ctrl + b" 和 "%"
你会发现,窗口被分成了两个窗格。这样就可以边写代码,边调试,而不用开两个terminal了!
痛点2的延伸:
你学会了Tmux的分屏功能,用着很爽,边写代码,边调试。这个时候老大来了,给你一个新任务:写个小脚本。
因为你正边写边调试代码,分屏功能用着很爽,肯定不会关掉这个分屏的terminal。只好新开一个terminal咯?
不用这么麻烦!新开一个窗口即可!
快捷键:"ctrl + b "和"c"。
你会发现,新开了一个窗口,之前分屏的窗口隐藏了。在terminal最下方,显示着窗口的编号。此时你蹭蹭蹭把小脚本写完了,如何返回之前的窗口呢?
快捷键:"ctrl + b "和"你要返回的窗口编号"。
如下图所示。
Tmux和Vim的冲突问题:快捷键和配色。
你进入Tmux后,发现在Tmux里使用Vim,之前设置的插件的快捷键不能用了,配色都变了。不要慌,下面是解决方案。
快捷键:
打开PuTTY设置界面,在Terminal –> Keyboard下,将The Function keys and keypad从默认选项“ESC[n~”更改为“Xterm R6”,记得保存设置,之后功能键就可用了。
如下图所示。
配色:
两个解决方法
1、一种解决方法是,export出TERM环境变量为xterm-256color。(同时需要上面快捷键的操作,即把默认选项“ESC[n~”更改为“Xterm R6”)直接执行下列代码:
echo 'export TERM=xterm-256color' >> ~/.bashrc
source ~/.bashrc
2、另一种解决方法是使用-2参数启动tmux,强制tmux认为终端支持256 colours:
echo 'alias tmux="tmux -2"' >> ~/.bashrc
source ~/.bashrc
对于其他功能和快捷键,大家就可以自己去探索了,下面是快捷键参考:
按下 Ctrl-b
后的快捷键如下:
基础
?
获取帮助信息
会话管理
s
列出所有会话$
重命名当前的会话d
断开当前的会话
窗口管理
c
创建一个新窗口,
重命名当前窗口w
列出所有窗口%
水平分割窗口"
竖直分割窗口n
选择下一个窗口p
选择上一个窗口0~9
选择0~9对应的窗口
窗格管理
%
创建一个水平窗格"
创建一个竖直窗格h
将光标移入左侧的窗格*j
将光标移入下方的窗格*l
将光标移入右侧的窗格*k
将光标移入上方的窗格*q
显示窗格的编号o
在窗格间切换}
与下一个窗格交换位置{
与上一个窗格交换位置!
在新窗口中显示当前窗格x
关闭当前窗格
其他
t
在当前窗格显示时间
参考链接:
1、Tmux 入门介绍
http://blog.jobbole.com/87278/
2、Tmux 速成教程:技巧和调整
http://blog.jobbole.com/87584/
3、解决tmux在PuTTY下工作异常的问题
http://www.tuicool.com/articles/2eeYBz
linux开发神器--Tmux的更多相关文章
- (转载)Linux终端复用神器-Tmux使用
Linux终端复用神器-Tmux使用 转载地址:https://blog.51cto.com/652465/2094738 Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于Open ...
- 虚拟机+桥接模式+Host-only模式 搭建完美的Windows下Linux开发环境
相信有很多鞋童和我一个样是一枚Linux码农(我现在还是嵌入式方向). 做Linux开发势必需要一个Linux环境, 大多数开发者会首先选择一个Linux发行版, 其中Ubuntu LTS版本应该是选 ...
- 利用 WSL 在 Windows下打造高效的 Linux 开发环境
WSL-Windows Subsystem for Linux 介绍 The Windows Subsystem for Linux lets developers run Linux environ ...
- 推荐一款全能测试开发神器:Mockoon!1分钟快速上手!
1. 说一下背景 在日常开发或者测试工作中,经常会因为下游服务不可用或者不稳定时,通过工具或者技术手段去模拟一个HTTP Server,或者模拟所需要的接口数据. 这个时候,很多人脑海里,都会想到可以 ...
- 20145213《信息安全系统设计基础》实验一 Linux开发环境的配置
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名: 黄亚奇 祁玮 学号:20145213 20145222 成绩: 指导教师:娄嘉鹏 实验日期:2016 ...
- 用Windows+VirtualBox搭建嵌入式Linux开发环境
Windows+VirtualBox的嵌入式Linux开发环境的搭建 最近一直在学习Linux的设备驱动编写,一直是在物理机上安装的Ubuntu进行的,但是在Ubuntu12.04的系统中,已经不能用 ...
- 嵌入式linux开发环境构建
2.1硬件环境构建 2.1.1主机与目标板结合的交叉开发模式 在主机上编辑.编译软件,然后再目标办上运行.验证程序. 对于S3C2440.S3C2410开发板,进行嵌入式Linux开发时一般可以分为以 ...
- 嵌入式Linux开发板
嵌入式Linux开发板开发介绍: iTOP-4412嵌入式Linux开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,独家配备三星S5M8767电源管理,配备Andro ...
- 8月11日嵌入式Linux开发免费项目体验邀您参与
嵌入式Linux开发免费项目体验开课啦~~我们特意邀请到粤嵌金牌讲师和技术专家,为大家带来精彩有趣的嵌入式公开课,涉及到嵌入式学习.研发的方方面面.课堂中我们能体验到的不仅仅是最新资讯.技术体验,还有 ...
随机推荐
- c语言中enum类型的用法
11.10 枚举类型 在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量说明为整型,字符型或其它类型显然是不妥当的 ...
- Spark 机器学习
将Mahout on Spark 中的机器学习算法和MLlib中支持的算法统计如下: 主要针对MLlib进行总结 分类与回归 分类和回归是监督式学习; 监督式学习是指使用有标签的数据(LabeledP ...
- 解决org.openqa.selenium.WebDriverException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms org.springframework.beans.BeanInstantiation
解决方法为将selenium-server-standalone-2.37.0.jar升级至selenium-server-standalone-2.41.0.jar即可. 下载地址:http://s ...
- Windows服务的手动添加和删除方法
Windows服务的手动添加和删除方法 服务,是指执行指定系统功能的程序.例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序.其实,服务就是一种特殊的应用程序,它从服务启动开始就一直处于运行状态 ...
- 0801 am使用tp框架对数据库增删改查
增添数据,3种方法 function Text3() { $m=D("info"); //1.使用数组 $attr = array( "code"=>&q ...
- framebuff 显示子系统
#include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <linux/fb.h ...
- db2 怎么计算两个时间相差多少个月。如2015-10-10 和2014-1-12
SELECT timestampdiff (256, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23')) ...
- 【java】: 操作excel2007/2003
//上传位置(与操作excel无关,可不看) public String getUploadPath() { File theWebFolder = XMPPServer.getInstance(). ...
- IntelliJIDEA 14创建Maven管理的Java Web项目
1.新建项目,选择Maven,点击Next继续. 接着输入项目名 接着直接点击Finish即可 下图就是创建完毕后的Maven项目,双击pom.xml查看POM文件内容,可以自行添加Maven的依赖. ...
- vijos1144(小胖守皇宫)
也是ural1039 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步 ...