Tmux 是一个管理终端窗口会话的工具,官方的说明是
terminal multiplexer,直译过来就是终端多路转换器,…很高大上的样子.
安装
- 包管理器安装
brew install tmux
- 编译安装
git clone https://github.com/tmux/tmux.git # 获取想要安装的版本源码
cd tmux
sh autogen.sh
./configure && make
安装前需注意安装gcc等编译依赖包
panes 的默认布局方式
默认有 even-horizontal, even-vertical, main-horizontal, main-vertical, tiled 五种布局方式
CLIENTS 和 SESSIONS
CLIENTS代表运行了 tmux 的终端,SESSIONS代表 tmux 中的会话.
WINDOWS 和 PANES
WINDOWS代表 tmux 中的窗口,PANES代表 tmux 中的面板.
快捷键
| 快捷键 | 用途 |
|---|---|
| C-b | 前置功能键,所有快捷键都是在此之后输入来触发的 |
| ? | 列出按键绑定 |
| : | 进入命令模式 |
| C-z | 挂起 |
| t | 显示时间 |
| ~ | 显示 tmux 之前的消息通知 |
| C,M-o | 旋转,反向旋转当前 panes 的布局 |
| M-1~5 | 切换对应的 panes 的默认布局 |
| Space | 在 panes 的默认布局中循环切换 |
| C,M-方向键 | 以每次 1,5 像素调整 pane 大小 |
| 方向键 | 按方向进入 pane |
| ”,% | 上下,左右分割 pane |
| ; | 切换到之前的 pane |
| o | 切换到下一个 pane |
| q | 显示 pane 的 index |
| m | 标记当前 pane |
| M | 清除编辑的 pane |
| x | 干掉当前 pane |
| z | 切换当前 pane 的缩放模式 |
| {,} | 向前,后交换 pane 位置 |
| ! | 将当前 pane 脱离当前 window 独立新开一个 window |
| c | 创建一个新的 window |
| & | 干掉当前的 window |
| f | 搜索 window |
| w | 列出所有的 window |
| i | 显示当前 window 的一些信息 |
| l | 切换到之前的 window |
| p,n | 切换到下一个 window |
| 0~9 | 切换对应 index 的 window |
| ’ | 输入 window 的 index 来切换 window |
| . | 输入设置当前 window 的 index |
| , | 重命名当前 window |
| $ | 重命名 session |
| (,) | 向前,向后切换 session |
| L | 切换至之前的 session |
| s | 列出所有的 session |
| [ | 进入复制模式 |
| # | 列出所有的粘贴缓冲区 |
| ] | 粘贴最近的缓冲区内容 |
| = | 选择粘贴的缓冲区 |
| - | 删除最近的粘贴缓冲区 |
| d | 断开当前 client |
| D | 选择一个 client 使其断开 |
| r | 强制重绘当前 client |
Trouble Shooting
tmux打开emacs无法使用shift+arrow选中:
将以下内容添加到~/.tmux.conf:
setw -g xterm-keys on
将以下内容添加到~/.emacs.d/init.el:
;; handle tmux's xterm-keys
;; put the following line in your ~/.tmux.conf:
;; setw -g xterm-keys on
(if (getenv "TMUX")
(progn
(let ((x 2) (tkey ""))
(while (<= x 8)
;; shift
(if (= x 2)
(setq tkey "S-"))
;; alt
(if (= x 3)
(setq tkey "M-"))
;; alt + shift
(if (= x 4)
(setq tkey "M-S-"))
;; ctrl
(if (= x 5)
(setq tkey "C-"))
;; ctrl + shift
(if (= x 6)
(setq tkey "C-S-"))
;; ctrl + alt
(if (= x 7)
(setq tkey "C-M-"))
;; ctrl + alt + shift
(if (= x 8)
(setq tkey "C-M-S-"))
;; arrows
(define-key key-translation-map (kbd (format "M-[ 1 ; %d A" x)) (kbd (format "%s<up>" tkey)))
(define-key key-translation-map (kbd (format "M-[ 1 ; %d B" x)) (kbd (format "%s<down>" tkey)))
(define-key key-translation-map (kbd (format "M-[ 1 ; %d C" x)) (kbd (format "%s<right>" tkey)))
(define-key key-translation-map (kbd (format "M-[ 1 ; %d D" x)) (kbd (format "%s<left>" tkey)))
;; home
(define-key key-translation-map (kbd (format "M-[ 1 ; %d H" x)) (kbd (format "%s<home>" tkey)))
;; end
(define-key key-translation-map (kbd (format "M-[ 1 ; %d F" x)) (kbd (format "%s<end>" tkey)))
;; page up
(define-key key-translation-map (kbd (format "M-[ 5 ; %d ~" x)) (kbd (format "%s<prior>" tkey)))
;; page down
(define-key key-translation-map (kbd (format "M-[ 6 ; %d ~" x)) (kbd (format "%s<next>" tkey)))
;; insert
(define-key key-translation-map (kbd (format "M-[ 2 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
;; delete
(define-key key-translation-map (kbd (format "M-[ 3 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
;; f1
(define-key key-translation-map (kbd (format "M-[ 1 ; %d P" x)) (kbd (format "%s<f1>" tkey)))
;; f2
(define-key key-translation-map (kbd (format "M-[ 1 ; %d Q" x)) (kbd (format "%s<f2>" tkey)))
;; f3
(define-key key-translation-map (kbd (format "M-[ 1 ; %d R" x)) (kbd (format "%s<f3>" tkey)))
;; f4
(define-key key-translation-map (kbd (format "M-[ 1 ; %d S" x)) (kbd (format "%s<f4>" tkey)))
;; f5
(define-key key-translation-map (kbd (format "M-[ 15 ; %d ~" x)) (kbd (format "%s<f5>" tkey)))
;; f6
(define-key key-translation-map (kbd (format "M-[ 17 ; %d ~" x)) (kbd (format "%s<f6>" tkey)))
;; f7
(define-key key-translation-map (kbd (format "M-[ 18 ; %d ~" x)) (kbd (format "%s<f7>" tkey)))
;; f8
(define-key key-translation-map (kbd (format "M-[ 19 ; %d ~" x)) (kbd (format "%s<f8>" tkey)))
;; f9
(define-key key-translation-map (kbd (format "M-[ 20 ; %d ~" x)) (kbd (format "%s<f9>" tkey)))
;; f10
(define-key key-translation-map (kbd (format "M-[ 21 ; %d ~" x)) (kbd (format "%s<f10>" tkey)))
;; f11
(define-key key-translation-map (kbd (format "M-[ 23 ; %d ~" x)) (kbd (format "%s<f11>" tkey)))
;; f12
(define-key key-translation-map (kbd (format "M-[ 24 ; %d ~" x)) (kbd (format "%s<f12>" tkey)))
;; f13
(define-key key-translation-map (kbd (format "M-[ 25 ; %d ~" x)) (kbd (format "%s<f13>" tkey)))
;; f14
(define-key key-translation-map (kbd (format "M-[ 26 ; %d ~" x)) (kbd (format "%s<f14>" tkey)))
;; f15
(define-key key-translation-map (kbd (format "M-[ 28 ; %d ~" x)) (kbd (format "%s<f15>" tkey)))
;; f16
(define-key key-translation-map (kbd (format "M-[ 29 ; %d ~" x)) (kbd (format "%s<f16>" tkey)))
;; f17
(define-key key-translation-map (kbd (format "M-[ 31 ; %d ~" x)) (kbd (format "%s<f17>" tkey)))
;; f18
(define-key key-translation-map (kbd (format "M-[ 32 ; %d ~" x)) (kbd (format "%s<f18>" tkey)))
;; f19
(define-key key-translation-map (kbd (format "M-[ 33 ; %d ~" x)) (kbd (format "%s<f19>" tkey)))
;; f20
(define-key key-translation-map (kbd (format "M-[ 34 ; %d ~" x)) (kbd (format "%s<f20>" tkey)))
(setq x (+ x 1))
))
)
)