# tmux

houdunren.com @ 向军大叔

tmux 是linux中一种管理窗口的程序,它提供了一个Session随时存储和恢复的功能。

image-20200108164341247

使用 tmux 可以做到上班时在公司服务器上写代码,下班后 detach了当前Session,回到家后登录服务器又attach 了Session。

这样在上班时的会话又恢复可用了,这时打开的文件、vim 等和公司是一样的。

# 软件介绍

tmux 包括会话、窗口、面板三个角色,依次为包含关系。

img

# 软件安装

使用以下命令安装 tmux,linux与mac都可以使用brew进行安装

# Ubuntu 或 Debian
$ sudo apt-get install tmux

# Mac
$ brew install tmux

# CentOS 或 Fedor可以使用yum/dnf/brew等方式安装,brew版本更高些
$ brew install tmux

# 风格设置

有个漂亮的风格,会让编程时有不一样的心情

# 字体图标

执行以下指令安装字体图标到宿主系统中,有些风格需要图标时就可以正常显示了

# clone
git clone https://github.com/powerline/fonts.git --depth=1
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts

使用的是 item2 需要进行以下设置

image-20200109152424996

# 安装风格

gpakosz/.tmux

tmux 的风格包很多,下面介绍 gpakosz/.tmux 风格包的安装方法

Screenshot

通过执行以下命令安装风格,之后通过修改 ~/.tmux.conf.local 来定义界面

cd
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

重新加载 tmux 配置项以使风格生效

tmux source-file ~/.tmux.conf

tmux-onedark-theme

大叔喜欢颜色不那么鲜艳的 tmux-onedark-theme 风格

image-20200109160737009

安装方式如下

  1. Clone 项目代码

    git clone https://github.com/odedlaz/tmux-onedark-theme
    
  2. 修改配置文件 ~/.tmux.conf,如果想显示完整日期就删除后三行

    run-shell ~/tmux-onedark-theme/tmux-onedark-theme.tmux
    set -g @onedark_widgets " "
    set -g @onedark_time_format " "
    set -g @onedark_date_format "%B"
    set-option -g status-position top
    
    # 解除默认前缀
    unbind C-b
    # 设置自定义前缀
    set -g prefix C-a
    # 采用vim的操作方式
    setw -g mode-keys vi
    # 窗口序号从1开始计数
    set -g base-index 1
    # 开启鼠标模式
    # set-option -g mouse on
    
    # 通过前缀+KJHL快速切换pane
    #up
    bind-key k select-pane -U
    #down
    bind-key j select-pane -D
    #left
    bind-key h select-pane -L
    #right
    bind-key l select-pane -R
    
  3. 加载配置

    tmux source-file ~/.tmux.conf
    

# 快速上手

因为 tmux 命令较多,所以先掌握以下这些,用的时候再来从后面的命令中查找。

# 新建会话
tmux new -s hdcms
# 查看会话
ctrl+b s

# 创建窗口
ctrl+b c
# 切换到2号窗口
ctrl+b 2
# 窗口改为了php
ctrl+b , 
# 关闭窗口
ctrl+b &

# 水平拆分出一个新窗格
ctrl+b %
# 垂直拆分窗格
ctrl+b "
#切换到下一个窗格
ctrl+b o
# 关闭窗格
ctrl+b x

# 指令列表

# 会话管理

会话是最大的单位,包含窗口与窗格

命令 说明 快捷键
tmux new -s 创建会话
tmux detach 退出当前会话,会话进程仍然在后台运行 Ctrl+b d
tmux ls 查看当前所有的 会话 Ctrl+b s
tmux attach -t 重新接入某个已存在的会话
tmux kill-session 杀死某个会话
tmux switch -t 切换会话
tmux rename-session 重新命名会话 Ctrl+b $
tmux at -d 重绘窗口,在不同屏幕上保持窗口为最小尺寸

tmux默认会同步会话到所有窗口,并使用尺寸最小窗口的尺寸,这会造成大窗口有小点。

image-20200123210737845

使用以下方式来解决

tmux at -d #简写为 tmux a -d

# 窗口管理

窗口属于会话,窗口包含多个窗格

命令 说明 快捷键
tmux new-window -n 创建新窗口 Ctrl+b c
tmux select-window -t 切换窗口
tmux rename-window 重命名当前窗口 Ctrl+b ,

切换窗口快捷键

快捷键 说明
Ctrl+b p 切换到上一个窗口(按照状态栏上的顺序)
Ctrl+b n 切换到下一个窗口
Ctrl+b 切换到指定编号的窗口,number 是状态栏上的窗口编号
Ctrl+b w 从列表中选择窗口
ctrl+b & 关闭当前窗口

# 窗格管理

拆分窗格

命令 说明
tmux split-window -h 划分左右两个窗格
tmux split-window 划分上下两个窗格

移动窗格

命令 说明
tmux select-pane -U 光标切换到上方窗格
tmux select-pane -D 光标切换到下方窗格
tmux select-pane -L 光标切换到左边窗格
tmux select-pane -R 光标切换到右边窗格
tmux swap-pane -U 当前窗格上移
tmux swap-pane -D 当前窗格下移

窗格快捷键

快捷键 说明
Ctrl+b % 划分左右两个窗格
Ctrl+b " 划分上下两个窗格
Ctrl+b ; 切换到上一个窗格
Ctrl+b o 光标切换到下一个窗格
Ctrl+b { 当前窗格左移
Ctrl+b } 当前窗格右移
Ctrl+b Ctrl+o 当前窗格上移
Ctrl+b Alt+o 当前窗格下移
Ctrl+b x 关闭当前窗格
Ctrl+b ! 将当前窗格拆分为一个独立窗口
Ctrl+b z 当前窗格全屏显示,再使用一次会变回原来大小
Ctrl+b q 显示窗格编号
Ctrl+b Ctrl+ 按箭头方向调整窗格大小