Linux屏幕管理(二)tmux

安装:

# ubuntu
$ sudo apt-get install -y tmux
# Centos
$ sudo yum install -y tmux

查看帮助

$ man tmux

单元模块(会话,窗口,面板)

根据tmux的定义,在开启了tmux服务器后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个面板;也就是说,这里看到的所谓终端控制台应该称作tmux的一个面板,虽然其使用方法与终端控制台完全相同。

tmux使用C/S模型构建,主要包括以下单元模块:

server服务器。输入tmux命令时就开启了一个服务器。
session会话。一个服务器可以包含多个会话
window窗口。一个会话可以包含多个窗口。
pane面板。一个窗口可以包含多个面板。

配置文件:

tmux配置文件在~/.tmux.conf,这个文件可能不存在,你可以自己新建。配置文件中可以修改默认绑定的快捷键等。

$ vim ~/.tmux.conf

一个示例:(可以根据自己的需求来调整)

#将激活控制台的快捷键由Ctrl+b修改为Ctrl+a,Ctrl+a是Screen的快捷键
set-option -g prefix C-a
unbind-key C-b
bind-key C-a send-prefix

# 此类配置可以在命令行模式中输入show-options -g查询
set-option -g base-index 1                        # 窗口的初始序号;默认为0,这里设置为1
set-option -g display-time 5000                   # 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000                    # 控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
set-option -g status-keys vi                      # 操作状态栏时的默认键盘布局;可以设置为vi或emacs
set-option -g status-right "#(date +%H:%M' ')"    # 状态栏右方的内容;这里的设置将得到类似23:59的显示
set-option -g status-right-length 10              # 状态栏右方的内容长度;建议把更多的空间留给状态栏左方(用于列出当前窗口)
set-option -g status-utf8 on                      # 开启状态栏的UTF-8支持

# 此类设置可以在命令行模式中输入show-window-options -g查询
set-window-option -g mode-keys vi    # 复制模式中的默认键盘布局;可以设置为vi或emacs
set-window-option -g utf8 on         # 开启窗口的UTF-8支持

# 添加自定义快捷键
bind-key z kill-session                     # 按z结束当前会话;相当于进入命令行模式后输入kill-session
bind-key h select-layout even-horizontal    # 按h将当前面板布局切换为even-horizontal;相当于进入命令行模式后输入select-layout even-horizontal
bind-key v select-layout even-vertical      # 按v将当前面板布局切换为even-vertical;相当于进入命令行模式后输入select-layout even-vertical

快捷键基本使用:


# 系统操作:

C-b ?  # 显示快捷键帮助. 里边会罗列很有用的快捷键。按q返回

C-b d   # 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
C-b D   # 选择要脱离的会话;在同时开启了多个会话时使用
Ctrl+b z  # 挂起当前会话
Ctrl+b  r   # 强制重绘未脱离的会话 #TODO:没看懂怎么用
C-b s   # 选择并切换会话;在同时开启了多个会话时使用。如果有多个session, 可以很方便进行切换。
C-b :   # 进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器。
Ctrl+b  [   # 进入复制模式(copy-mode), 可以滚屏;此时的操作与vi/emacs相同,按q/Esc退出 #TODO:没看懂怎么用
Ctrl+b  ~   # 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息 #TODO:没看懂怎么用


C-b C-o  #调换窗口位置 #TODO:
C-b 空格键  #采用下一个内置布局 . 在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
在一个窗口中存在多个面板的时候有用。
C-b ! # 把当前窗口变为新窗口。 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板


## 面板操作:

## 因为iTerm, putty, xshell 等具有了分屏功能,这里的分屏没什么用
C-b  "  # 横向分隔窗口。 将当前面板平分为上下两块
C-b % # 纵向分隔窗口。将当前面板平分为左右两块
C-b ;  # 切换到最后一个使用的面板

C-b  x   # 关闭当前面板; 面板级别
C-b &   # 关闭窗口; 窗口级别
C-b d   # 退出会话; 会话级别
# TODO C-b Ctrl+方向键    // 以1个单元格为单位移动边缘以调整当前面板大小
# TODO C-b Alt+方向键 // 以5个单元格为单位移动边缘以调整当前面板大小
C-b   {   # 向前置换当前面板.  移动面板。
C-b   }   # 向后置换当前面板
C-b   Alt+o   # 逆时针旋转当前窗口的面板
C-b   Ctrl+o  # 顺时针旋转当前窗口的面板。 在一个窗口中存在多个面板(pannel)时有用。

C-b q # 显示分隔窗口的编号, 一个窗口(window)多个pannel.显示面板编号
C-b o # 跳到下一个面板(分隔窗口)。和"C-b 上下键"功能相同
C-b 上下键  # 移动光标以选择面板. 上一个及下一个分隔窗口. 这里只在分割窗口存在的时候使用。
C-b C-方向键 #调整分隔窗口大小。 ctrl+方向键 为系统级的命令。

C-b &  # 确认后退出 tmux

## 窗口操作
# 新建窗口,修改窗口
C-b c # 创建新窗口
C-b , #修改当前窗口名称.重命名当前窗口;这样便于识别

C-b &   # 关闭当前窗口。 关闭的时候会提醒 yes or not.

## 切换窗口
C-b 0~9 #选择几号窗口
C-b c # 创建新窗口
C-b n # 选择下一个窗口
C-b l # 最后使用的窗口.在前后两个窗口间互相切换
C-b p # 选择前一个窗口

C-b w # 以菜单方式显示及选择窗口,针对窗口级别。
C-b s # 以菜单方式显示和选择会话, 针对会话级别。

C-b t #显示时钟,这个功能挺逗的。
C-b .   // 修改当前窗口编号;相当于窗口重新排序。通过窗口标记来执行。
C-b f   // 在所有窗口中查找指定文本

命令基本操作:

查看session 列表:

$ tmux ls

$ tmux ls
0: 3 windows (created Mon Nov 23 11:31:08 2015) [106x24]
1: 4 windows (created Mon Nov 23 11:34:27 2015) [106x24]
2: 6 windows (created Mon Nov 23 11:34:40 2015) [106x24]
3: 4 windows (created Mon Nov 23 11:38:47 2015) [106x24]

进入到某一个session

$ tmux attach-session -t session
or
$ tmux attach -t session

$ tmux attach-session -t 0

建立会话

$ tmux new -s session
$ tmux new -s session -d #在后台建立会话

退出会话(之前的会话仍然保存)

$ ctrl+b+d 退出会话. 
之前的会话可以用tmux ls 查到

回到行首

linux 系统默认提供的回到行首的方式: ctrl+a. 在使用tmux 时如果配置了ctrl+a 作为 leader(命令前缀)。想要到达行首,可以使用:

ctrl+a+a

扩展阅读

Tmux 入门
http://wbowam.github.io/tmux-ru-men.html
简介:
伊的一篇博客。

tmux的使用方法和个性化配置
http://blog.csdn.net/robertbaker/article/details/42172203
简介:
tmux 的配置。 介绍很详细。

https://tulpar008.github.io/

你可能感兴趣的:(Linux屏幕管理(二)tmux)