把终端变成工作台:我的 tmux 配置
为什么用 tmux
不是为了「看起来很酷」。真正的原因是:SSH 断线,工作不丢。
在远程服务器上跑一个长任务,网络一抖就前功尽弃。tmux 让进程活在会话里,重连后 tmux attach 就回到原样。
必改的前缀键
默认 Ctrl + b 离手指太远,我换成 Ctrl + a:
set -g prefix C-a
unbind C-b
bind C-a send-prefix
从 1 开始编号窗口
set -g base-index 1
setw -g pane-base-index 1
因为键盘上 1 就在 0 旁边,但人的直觉是「第一个是 1」。
切分窗口
bind | split-window -h -c '#{pane_current_path}'
bind - split-window -v -c '#{pane_current_path}'
这两行有两个好处:| 和 - 对应横竖方向,比默认的 % 和 " 直观;-c '#{pane_current_path}' 让新窗口继承当前目录,不用每次都 cd。
鼠标和滚动
set -g mouse on
set -g history-limit 50000
开了鼠标之后,选中复制也方便很多(注意 tmux 内复制要用 Shift 配合)。
历史行数默认只有 2000,跑构建看日志根本不够,我直接拉到 5 万。
一个会话习惯
我现在的习惯是按项目开会话,而不是按服务器:
tmux new -s blog
tmux new -s api
好处是上下文清楚。想切项目时 tmux ls 一眼看到所有任务,tmux attach -t blog 直接回去。
比在同一个会话里开一堆窗口去找要快得多。
小结
tmux 的学习曲线主要卡在默认键位别扭上。改完前缀和切分键,一周就习惯了,然后就再也回不去。