Linux终端复用器 - Tmux

引言

开发Linux程序时,经常需要通过终端连接到Linux服务器,然后在上面进行一些操作,比如设置一些环境变量、编译、测试等等,而有些过程会比较久,一旦中间出现一些网络不稳定断开连接就经常需要重新来过。
tmux就可以很好的解决这个问题,通过在Linux服务器上开一个终端的deamon,然后需要时连接上去,就算断网,那个终端也一直还在,可以继续之前的操作。当然tmux的功能不止这个,还有分屏等功能。

简介

tmux是一种terminal multiplexer,翻译过来就终端复用器,它可以在Linux上以后台的形式开多个终端,并支持标签功能和多窗口功能。用户按需要attach到对应的窗口即可,如果没有把后台停止或Linux关机,之前的操作就会一直保留着。并且还能在窗口间进行快捷的跳转,复制文本等。
效果图
tmux有以下几个名词:
session 会话:一个服务器可以包含多个会话
window 窗口:一个会话可以包含多个窗口
pane 面板:一个窗口可以包含多个面板
tmux层级图

安装

包管理器安装

这个需要root权限

# apt-get install tmux    # Ubuntu
# yum install tmux        # Centos

无root权限安装

在公用的服务器,一般用户是没有root权限的,如果管理员没有给安装tmux,那这时候就需要自己通过源码安装自己的HOME目录下了。

  • 下载安装依赖libevent 2.x
  • 下载安装依赖ncurses
  • 下载安装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> PgDnshift + 鼠标滚轮等来进入拷贝模式,然后进行翻页查看历史输出。

参考链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值