Tmux是一个很好用的终端分屏工具,在Mac下安装和使用略有不同,下面简述使用方法。

安装

brew install tmux

image-20200901165807457

运行Tmux,ctrl+b将tmux激活为快捷键接受模式,再按下%即可左右切分当前窗口

image-20200901183157576

窗格操作

窗格(Pane)操作

  • % 左右平分出两个窗格
  • " 上下平分出两个窗格
  • x 关闭当前窗格
  • { 当前窗格前移
  • } 当前窗格后移
  • ; 选择上次使用的窗格
  • o 选择下一个窗格,也可以使用上下左右方向键来选择
  • space 切换窗格布局,tmux 内置了五种窗格布局,也可以通过 ⌥1⌥5来切换
  • z 最大化当前窗格,再次执行可恢复原来大小
  • q 显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格image-20200901183413996

窗口操作

窗口(window)操作

tmux 除了窗格以外,还有窗口(window) 的概念。依次使用以下快捷键来熟悉 tmux 的窗口操作:

  • c 新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态
  • p 切换至上一窗口
  • n 切换至下一窗口
  • w 窗口列表选择,注意 macOS 下使用 ⌃p⌃n 进行上下选择
  • & 关闭当前窗口
  • , 重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id
  • 0 切换至 0 号窗口,使用其他数字 id 切换至对应窗口
  • f 根据窗口名搜索选择窗口,可模糊匹配

其实还有Session操作,但是目前用不到,等用到再说吧。:airplane:

Session操作

刚说完flag就倒了,本地使用还好,SSH的时候session真的必不可少。

下面列出一些session的操作

启动新会话:

tmux [new -s 会话名 -n 窗口名]

恢复会话:

tmux at [-t 会话名]

列出所有会话:

tmux ls

关闭会话:

tmux kill-session -t 会话名

关闭所有会话:

tmux kill-server

session快捷键

首先按下前缀键再进行如下操作

  • :new<回车>启动新会话
  • s列出所有会话
  • $重命名会话
  • d断开当前会话
  • D选择要断开的会话
  • ctrl+z挂起当前会话
  • r重载当前会话
  • 进入命令行模式,可以用ls等命令

配置部分

如果没有配置文件先新建一个touch ~/.tmux.conf

在里面配置如下

# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix

# Use Alt-arrow keys to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window

# Mouse mode
set -g mouse on


# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v

# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"
  • Send prefix:把prefix的ctrl+b变为了ctrl+a
  • Use Alt-arrow keys to switch panes:直接用alt+箭头在pane之间切换
  • Shift arrow to switch windows:直接使用shift+箭头在window之间切换
  • Mouse mode:用鼠标自由调整pane大小,还可以通过右键实现一些基本操作

    image-20200901204513420

  • Set easier window split keys:使用v代表横向分割,h代表纵向。比%和"更直观一些
  • Easy config reload:修改完.tmux.conf配置之后不需要tmux kill-session直接prefix+r就可以重新加载。(这里其实没必要设置,因为后面配置了保存工作区的插件,快捷键冲突,真的需要这个功能可以把快捷键换成别的。)

保存工作区

有时候服务器还是需要重启的,重启之后所有Session都会丢失,开机后还得重新建立Session,Window和Pane。

使用tmux-ressurect,可以一键保存Workspace。

安装插件

使用tpm(Tmux Plugin Manager)安装。

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

把下面的配置加入~/.tmux.conf

下面的配置就是把通过tpm要装的几个插件先列到配置里。安装通过<perfix> + I来实现安装。

set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
run '~/.tmux/plugins/tpm/tpm'

保存后重新加载配置,并且安装插件。

安装插件方法上面已经说过就是<prefix> + I

更新与卸载都很简单

<prefix> U
<prefix> alt+u

之后就很简单了,<prefix> ctrl-s为保存,<prefix> ctrl-r为恢复。

image-20200902160149660

后记

Tmux好用是好用,但是还是有一些痛点的。比如复制粘贴就不太灵光,在MacOS下虽然可以摁住Fn进行选择,然后Command⌘+C/V进行复制粘贴,但是外接键盘的时候没有Fn键就很尴尬。

改成用iTerm解决了,最终结果如下。

image-20200902145916321

Last modification:September 7, 2020
恰饭环节