tmux窗口管理

工欲善其事必先利其器。。。

对于tmux简单来说,一个会话里面可以有多个窗口,一个窗口里面可以有多个面板。

安装

1
yum -y install tmux

会话(Session)

概念:

我们拿终端工具如:XShell、SecureCRT 等去连接正在运行的服务器的时候,每新建一个连接,就是一个新的会话。使用 Tmux 新建会话的时候,也是一样,一个新的会话就表示一个新的连接。

常用操作

  • 创建一个新的会话test1:tmux new -s sessionName
  • 断开当前会话:tmux detach(快捷键:Ctrl+b+d)
  • 进入之前的会话:tmux attach-session -t sessionName,简写:tmux a -t sessionName
  • 关闭会话:tmux kill-session -t sessionName
  • 查看所有会话:tmux list-session 简写:tmux ls(快捷键:Ctrl+b+s)
  • 关闭所有会话:tmux kill-server
  • 强制重载当前会话:(快捷键:Ctrl+b+r)
  • 重新开启某一会话: tmux attach -t sessionName
  • 切换到某一会话:tmux switch -t sessionName
  • 重命名会话: tmux rename -t oldName newName

默认会话快捷键

  • 列出所有快捷键:Ctrl + b,?,按q返回
  • 脱离当前会话:Ctrl + b,d,输入tmux attach能够重新进入之前会话
  • 选择并切换会话:Ctrl + b,s
  • 选择要脱离的会话:Ctrl + b,D
  • 挂起当前会话:Ctrl + z
  • 列出提示信息缓存:Ctrl + b,~,含tmux返回的各种提示信息
  • 进入命令行模式:Ctrl + b,:,可输入tmux命令,如kill-server
  • 复制模式:Ctrl + b,[,光标移动到复制内容位置,空格键开始,方向键选择复制,回车确认,q/Esc退出
  • 粘贴模式:Ctrl + b,],粘贴在复制模式中复制的内容,按q/Esc退出
  • 显示当前的时间:ctrl + b,t

窗口(Window)

概念

窗口:窗口的概念,可以类比于 Windows 里面的窗口的概念。
之前我们连服务器的时候,终端工具每次连接只有一个界面,当我们需要同时操作多个过程的时候,我们就需要建立新的连接。这样很不方便。
Tmux 里面的窗口的概念,就可以让我们在一个会话里有多个界面,就不需要去建立的一个会话。

常用操作

  • 创建一个新的窗口:tmux new-window
  • 列出所有窗口:tmux list-windows
  • 根据序列索引选择窗口 tmux select-window -t :0-9
  • 重命名当前窗口:tmux rename-window

默认窗口快捷键

  • 创建新窗口:Ctrl + b,c
  • 关闭当前窗口:Ctrl + b,&
  • 切换到指定窗口:Ctrl + b,数字键
  • 重命名当前窗口,便于识别:Ctrl + b,,
  • 修改当前窗口编号,相当于重新排序:Ctrl + b,.
  • 切换至上一窗口:Ctrl + b,p
  • 切换至下一窗口:Ctrl + b,n
  • 前后窗口间互相切换:Ctrl + b,l
  • 通过窗口列表切换窗口:Ctrl + b,w
  • 在所有窗口中查找关键词,便于窗口多了切换:Ctrl + b,f

面板(Panel)

概念

面板是用于对界面的布局而言的。就是将一个界面划分为多个不同的区域,每个区域我们称之为一个面板

常用操作

  • 垂直切分窗口:tmux split-window
  • 水平切分窗口:tmux split-window -h
  • 在指定方向交换面板:tmux swap-pane -[UDLR]
  • 在指定方向选择下一个面板:tmux select-pane -[UDLR]

默认面板快捷键

  • 将当前面板上下分屏:Ctrl + b,"
  • 将当前面板左右分屏:Ctrl + b,%
  • 选择当前窗口中下一个面板:Ctrl + b,o
  • 移动光标选择对应面板:Ctrl + b,方向键
  • 向前置换当前面板:Ctrl + b,{
  • 向后置换当前面板:Ctrl + b,}
  • 逆时针旋转当前窗口的面板:Ctrl + b,Alt+o
  • 顺时针旋转当前窗口的面板:Ctrl + b,Ctrl+o
  • 显示面板编号:Ctrl + b,q
  • 关闭当前分屏:Ctrl + b,x
  • 将当前面板置于新窗口,即新建一个窗口,其中仅包含当前面板:Ctrl + b,!
  • 以1个单元格为单位移动边缘以调整当前面板大小:Ctrl + b,Ctrl+方向键
  • 以5个单元格为单位移动边缘以调整当前面板大小:Ctrl + b,Alt+方向键
  • 切换默认面板布局:Ctrl + b,空格键
  • 最大化当前所在面板:Ctrl + b,z,tmux 1.8新特性

其它

  • 列出所有tmux命令及其参数:tmux list-commands

  • 列出所有可以的快捷键和其运行的 tmux 命令:tmux list-keys

  • 流出所有的 session、window、pane、运行的进程号:tmux info

  • 变更配置文件后重新加载配置文件:tmux source-file ~/.tmux.conf

  • 重命名会话tmux rename -t 原会话名 新会话名

  • 会话间移动窗口:

    1
    2
    3
    `Ctrl + b,:`  进入命令行模式;
    move-window -s 源会话名:窗口号 -t 目标会话名 //move-window可以简写为movew
    movew -d 源会话名:窗口号 //将某个窗口移动到当前会话
  • 复制模式

    1
    2
    3
    4
    `Ctrl+b	[`进入复制模式,按`q`退出
    按下`空格键`开始复制,移动光标选择复制区域
    按下`回车键`复制选中文本并退出复制模式
    按下`Ctrl+b ]`粘贴复制模式中复制的文本
    • 复制模式中不接受键盘的字符输入,如果误入复制模式,可以直接按q键退出复制模式。
    • 另外复制模式中可以上翻查看在普通模式下无法查看的屏幕输出内容。
  • 窗口自动调整大小问题

    1
    2
    3
    4
    5
     tmux默认会同步同一个会话的操作到所有会话连接的终端窗口中,这种同步机制,限制了窗口的大小为最小的会话连接。
    为了避免窗口自动调整大小,终端剩余空间填充小圆点可以执行
    tmux a -d
    或在会话命令行模式下执行
    : a -d
  • 调整窗口排序顺序

    1
    2
    3
    4
    命令行模式下
    swap-window -s 1 -t 2 交换1、2窗口
    swap-window -t 1 当前窗口和1号窗口交换
    move-window -t 1 将当前窗口移动到1号窗口位置
  • 终端类型与配色方案

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    ncurses库包名
    CentOS 5:
    ncurses-5.5-24.20060715
    CentOS 6/7:
    ncurses-base-5.9-13.20130511.el7.noarch
    文件路径
    /usr/share/terminfo/
    eg:
    /usr/share/terminfo/s/screen-256color
    /usr/share/terminfo/x/xterm-256color
    终端配置
    echo $TERM
    echo $TERMINFO
    export TERM=screen-256color
    export TERM=xterm
    export TERMINFO=/user/share/terminfo
    tmux 临时设置默认终端类型
    set -g default-terminal "xterm"
    当终端不支持screen-256color,vim编辑文件报错时,将TERM修改为xterm
    # echo $TERM
    screen-256color
    export TERM=xterm
    备注:
    vim ~/.tmux.conf
    必须设置成
    set -g default-terminal "screen-256color"
    不能设置成
    set -g default-terminal "xterm-256color"
    否则tmux新开的窗口中默认的$TERM就是xterm-256color,
    开启omnitty 会有阴影,显示会有问题。也可以手动修改窗口中的$TERM环境变量消除阴影。
  • screen-256color和xterm-256color的区别?

参考