tmux是linux中一种管理窗口的程序。当执行多任务时,不用开启多个客户端来回使用Alt + Tab
切换,开一个客户端即可。而且,所有的状态都可以保存。
这里的状态,包括:
- 当前的窗口内容。例如,左边窗口使用
VI
编辑代码,右边是调试信息。当关闭客户端,重新连接时,左右的窗口保持不变。 - 当前的窗口的工作状态。尤其是多任务时的状态,此状态不收客户端连接Session状态的干扰,不管是前台Job还是后台Job(使用
[commander] &
执行命令)。省去了我们遗忘使用nohup
或者at
指令时,客户端异常断掉带来的麻烦。
tmux的基本概念
- Session:连接。是一组Window的集合。
- Window:单个可见窗口。类似一个标签页。是一组Pane的组合。
- Pane:窗格。可以理解为一个分屏。
三个元素在tmux的具体展现如下图,盗取自伯乐在线。
tmux的安装
一般采用网络直接安装的方式。版本为1.8。
1 | # yum install tmux |
或者
1 | $ sudo apt-get install tmux |
tmux的常用命令
以注释的方式解释命令的含义。
1 | $ tmux # 开启一个新的Session |
其他关于Session、Window和pane的操作,建议使用快捷键以及配置操作。
tmux的快捷键
本章prefix表示Ctrl + b
。下一章介绍如何更换prefix。
- 有关Session的快捷键。
快捷键 | 操作 |
---|---|
prefix s | 查看/切换Session |
prefix d | 离开Session |
prefix $ | 重命名当前Session |
- 有关Window的快捷键
快捷键 | 操作 |
---|---|
prefix c | 创建Window |
prefix & | 关闭Window |
prefix n | 切换到下一个Window |
prefix p | 切换到上一个Window |
prefix Window号 | 切换Window号 |
prefix w | 查看/切换Window |
- 有关Pane的快捷键
快捷键 | 操作 |
---|---|
prefix % | 垂直拆分一个Pane |
prefix “ | 水平拆分一个Pane |
prefix q | 显示Pane编号 |
prefix o | 切换到下一个Pane |
prefix z | 切换Pane的全屏 |
prefix Alt + 方向 | 调整Pane的大小 |
tmux的基本配置
编辑$HOME/.tmux.conf
文件,配置内容如下。
1 | # 设置Prefix为Ctrl+x |
tmux的复制粘贴
本章介绍的Buffer类似加强版剪贴板,可以显示并选择多个剪贴内容。
- 有关复制粘贴快捷键
快捷键 | 操作 |
---|---|
prefix [ | 开启复制模式 |
prefix ] | 粘贴 |
prefix = | 显示并选择Buffers(q退出) |
prefix # | 仅显示Buffers |
prefix - | 删除编号为0的Buffers |
开启复制模式后,可以用VI的移动快捷键HJKL
移动到需要复制的位置,按空格键
开启复制,移动到复制结束的位置,按Enter
键确认,按Esc
键取消。
按Esc
推出复制模式。
tmux的显示配置
以下配置可让tmux显示的更加漂亮,参考1。
1 | # 显示 |
tmux的问题
-
Buffer和系统剪贴板无法共享
如果是使用PuTTY链接到远程Server,使用tmux时,鼠标拖动复制是大麻烦。因为会连同其他窗格的内容一起拖动进来。
解决方法:(A) 重新开启一个窗口,开启VIM
,在编辑模式下进行粘贴,然后再用鼠标拖动复制。(B) PuTTY使用Alt+鼠标
进行复制。 -
不支持滚屏
当需要查看当前显示之前的内容,直接滚动鼠标滚轴不会得到我们想要的结果。
解决方法:开启复制模式prefix [
,使用PageUP
和PageDown
进行翻页操作。
如果是登录系统界面开启Terminal使用tmux,可以增加如下配置,增强鼠标操作。
2015.12.25更新:最新版本(v2.1)的tmux有可能弃用了下面的鼠标支持设置。
1 | # 鼠标支持 -- v2.1已弃用 Deprecated |
2015.12.25更新:如果启动tmux时出现unknow option
的字样时,请更新鼠标支持配置。
1 | # 鼠标支持 |
tmux的源码安装
2015.08.03更新本章。
CentOS6.X的yum源没有tmux,需要源码编译安装。
A. 安装编译环境
1 | # yum groupinstall -y 'Development Tools' |
B. 安装ncurses-devel
1 | # yum install -y ncurses-devel |
C. 下载libevent,并编译安装。
1 | # wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz |
D. 下载tmux,并编译安装。
1 | # wget http://downloads.sourceforge.net/tmux/tmux-1.8.tar.gz |
E. 配置库路径
执行cat
命令,并输入如下内容,Ctrl+d
退出
1 | cat - >> /etc/profile.d/libpath.sh |
使配置文件生效。
1 | echo "source /etc/profile.d/libpath.sh" >> ~/.bashrc |
至此,tmux
可正常运行。
~~ EOF ~~