终端复用软件之tmux简介

784次阅读  |  发布于5年以前

Tmux是一个优秀的终端复用软件,支持多标签,也支持窗口内部面板的分割,更重要的是,Tmux提供了窗体随时保存和恢复的功能。想象一下假如你在公司的服务器上开了许多窗口调试程序,回到家时通过SSH连接公司电脑又要打开一堆繁琐的窗口,而且还忘记了当时调试到哪一步了,那Tmux可以帮你解决这个难题,当SSH连接断开重新连接后能够恢复到原来的工作环境。

安装

sudo apt-get install tmux  

安装完成后输入tmux进入软件,界面类似一个下方带有状态栏的终端。

基本概念

Tmux基于典型的c/s模型,主要分为会话、窗口和面板三个元素:

图中左下角的3显示为当前会话,随后1 vim,2 bash,3 ssh 分别是3个窗口,蓝色bash表示当前窗口,图中用蓝色数字标记的1,2,3分别是bash窗口的三个面板。你还可以在tmux配置文件中给状态栏添加时间、天气等信息。

Tmux基本操作

Tmux的所有操作必须使用一个前缀进入命令模式,默认前缀为Ctrl+b,很多人会改为Ctrl+a,你可以修改tmux.conf配置文件来修改默认前缀:

Script

# 前缀设置为<Ctrl-a>  
    set -g prefix C-a  
    # 解除<Ctrl-b>  
    ubind C-b  

修改之后重启Tmux生效,或者先按Ctrl+b,然后输入:,进入命令行模式, 在命令行模式下输入:

Script

source-file ~/.tmux.conf  

你也可以在配置文件中加入下面这句话,以后改了配置文件只需要按前缀+r了。

Script

# 将r 设置为加载配置文件,并显示"reloaded!"信息  
    bind r source-file ~/.tmux.conf \; display "Reloaded!"  

加入如下几条语句, 现在切换面板就和vim一样了:

Script

# map Vi movement keys as pane movement keys  
    bind h select-pane -L  
    bind j select-pane -D  
    bind k select-pane -U  
    bind l select-pane -R  
## 复制/粘贴  

1. 按前缀+[ 进入复制模式  
2. 按 space 开始复制,移动光标选择复制区域  
3. 按 Enter 复制并退出copy-mode。  
4. 将光标移动到指定位置,按前缀+ ] 粘贴  

如果把tmux比作vim的话,那么我们大部分时间都是处于编辑模式,只需要在配置文件(~/.tmux.conf)中加入如下行即可以像 vim一样使用hjkl移动:  

``` Vim Script   
#copy-mode 将快捷键设置为vi 模式  
setw -g mode-keys vi  

## 会话的创建和保存

  * 终端运行tmux + 会话名,创建或打开会话
  * 前缀 + d 退出并保存会话

## 窗口操作

  * 前缀 + c 创建一个新的window
  * 前缀 + b 重命名当前window
  * 前缀 + & 关闭当前window
  * 前缀 + n 移动到下一个窗口
  * 前缀 + p 移动到前一个窗口
  * 前缀 + l 切换到上一个窗口

## 面板操作

在配置文件中添加下面两行就可以使用`前缀+ |-`来水平和垂直分割窗口:

Script 

use PREFIX | to split window horizontally and PREFIX - to split vertically

bind | split-window -h  
bind - split-window -v  

添加如下命令到配置文件后后可以使用HJKL来调整窗口大小:

Script 

resize panes using PREFIX H, J, K, L

bind H resize-pane -L 5  
bind J resize-pane -D 5  
bind K resize-pane -U 5  
bind L resize-pane -R 5  


其他操作:

  * \+ 方向键,切换窗口
  * \+ q 显示所有面板
  * \+ !/x 关闭当前面板

查看所有的按键,使用`<Ctrl-b> \+ ?`

## Tmux个性化

你可以使用[tmux-powerline](https://github.com/erikw/tmux-powerline)来美化你的状态栏。

美化之后的效果是这样的:

![](https://codingsky.oss-cn-hangzhou.aliyuncs.com/cdn/codingsky/upload/img/blog/61c65d4708d094d4b23b25c0460ecf89.jpg)

最后附上我的tmux配置文件:[.tmux.conf](https://github.com/LippiOuYang/Profiles/blob/master/tmux.conf)

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8