引言
开发Linux
程序时,经常需要通过终端连接到Linux
服务器,然后在上面进行一些操作,比如设置一些环境变量、编译、测试等等,而有些过程会比较久,一旦中间出现一些网络不稳定断开连接就经常需要重新来过。
而tmux
就可以很好的解决这个问题,通过在Linux
服务器上开一个终端的deamon,然后需要时连接上去,就算断网,那个终端也一直还在,可以继续之前的操作。当然tmux
的功能不止这个,还有分屏等功能。
简介
tmux
是一种terminal multiplexer,翻译过来就终端复用器,它可以在Linux上以后台的形式开多个终端,并支持标签功能和多窗口功能。用户按需要attach到对应的窗口即可,如果没有把后台停止或Linux关机,之前的操作就会一直保留着。并且还能在窗口间进行快捷的跳转,复制文本等。
tmux有以下几个名词:
session
会话:一个服务器可以包含多个会话
window
窗口:一个会话可以包含多个窗口
pane
面板:一个窗口可以包含多个面板
安装
包管理器安装
这个需要root权限
# apt-get install tmux # Ubuntu
# yum install tmux # Centos
无root权限安装
在公用的服务器,一般用户是没有root权限的,如果管理员没有给安装tmux
,那这时候就需要自己通过源码安装自己的HOME
目录下了。
- 下载安装依赖
libevent 2.x
- 下载解压源码 http://libevent.org/
./configure --prefix=$HOME/local
make && make install
- 下载安装依赖
ncurses
- 下载解压源码 http://invisible-island.net/ncurses/
./configure --prefix=$HOME/local
make && make install
- 下载安装
tmux
- 下载源码https://github.com/tmux/tmux
DIR=~/local
./configure CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib" --prefix=$HOME/local
make && make install
- 最后把~/local/bin追加加到
PATH
环境变量中,就可以直接用了
使用命令和快捷键
命令行
$ tmux #启动一个新的session
$ tmux new -s name #指定名字启动一个新的session
$ tmux ls #列出当前所有session
$ tmux a [-t name] #根据名字再连接回去
进入tmux后可以使用快捷键进行一些操作,所有的操作都是以前缀Ctrl+b
开始,然后松开按另外一个按键就对应一个操作。当然这个前缀<prefix>
是可以通过配置文件修改的。以下为一些常用快捷键:
<prefix> :new<CR> #创建新的Session,其中:是进入命令行模式
<prefix> d #detach,退出Tmux Session,回到父级Shell
<prefix> s #列出所有Session,可以通过j,k,回车切换
<prefix> c #创建新的Window
<prefix> x #列出所有Window
<prefix> <n> #切换到第n个Window
<prefix> , #为当前Window命名
<prefix> % #创建垂直切分的Pane
<prefix> " #创建水平切分的Pane
<prefix> ! #升级当前pane为一个window
<prefix> t #显示一个时钟
<prefix> ? #快捷帮助列表,忘记了可以去这里看看
在任意pane中输入exit就可以退出当前pane,一个window所有pane关掉也就关掉了,在忘记命令后可以用这个关掉想关的pane,window或session。
在tmux
中有一个拷贝模式,通过<prefix> [
进入,按下<space>
开始拷贝。然后用j,k,h,l
选择文本,按下<Enter>
拷贝所选内容,然后通过<prefix> ]
进行粘贴。
在tmux使用鼠标选择一段文本,默认的是只可以在tmux中粘贴,那怎么才能从tmux中复制东西到外面?我一般都是使用shift+鼠标左键来进行拷贝,就可以粘贴到外面了。
配置文件
tmux
可以通过在HOME目录下新建一个.tmux.conf
文件来进行一些个性化配置,以符合不同人的使用习惯。以下为一些简单的设置。
# <prefix> r可以重载配置
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# 前缀绑定 (Ctrl+a)
set -g prefix ^a
unbind ^b
bind a send-prefix
#打开vi风格选择文本
set -g mode-keys vi
#可以使用鼠标拖拽改变pane大小
set -g mouse-resize-pane on
set -g mouse-select-pane on
#可以使用鼠标选择window
set -g mouse-select-window on
#扩展鼠标的功能
set -g mode-mouse on
#使用alt+j,k,h,l来选择pane
bind -n M-h select-pane -L
bind -n M-l select-pane -R
bind -n M-k select-pane -U
bind -n M-j select-pane -D
#使用shift+Right,Left来选择window
bind -n S-Left previous-window
bind -n S-Right next-window
#设置最大历史输出
set -g history-limit 10000
tmux相当于在终端里面又开了另外一个终端,不要在自己外面这个终端拖动滚动条来上下翻页,而是要在tmux里面翻页来查看历史输出,可以通过<prefix> PgUp
,<prefix> PgDn
或shift + 鼠标滚轮
等来进入拷贝模式,然后进行翻页查看历史输出。