终端管理工具 Tmux
使用原因
作为一个开发人员,需要经常在终端下进行一些操作,比如在服务器上改改配置,或者开发用的就是Mac或Linux,那就更需要用到终端命令行了。而且命令行工具有时候是要比GUI操作起来要方便的。
但是用终端就会碰到一些问题,比如经常要开一堆各种用途的黑框框?远程连接的SSH一关,服务器上正跑的脚本就关了?
那我们就可以使用 tmux,tmux 是一款终端复用命令行工具,它可以满足我们的各种需求。
安装Tmux
Mac OS
先安裝 Homebrew,再用 brew 安裝 tmux。
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
brew update
brew install tmux
Debian / Ubuntu
sudo apt-get install tmux
RedHat / CentOS
yum install tmux
安装完后在终端下运行tmux,下方出现一行绿条就代表已经启动了。

基本概念
tmux 中内容分割有 3 个层级:
- session
每次下 tmux 指令时都会开启一个新的 session,每个 session 各自独立。 - window
window 就是当前整个终端页面,一个 session 里面可以有多个 window。 - pane
如下图,一个 window 可以切成多个区域,每个区域就是一个 pane,通常用来观察多个程序。
可以看做你拥有多个笔记本(session),每个笔记本都写了好多页(window),每个页面你可以分成几个区域(pane)来记不同的东西。

基本操作
如 vim,tmux 的快捷键操作需加prefix key,tmux 默认是 <Ctrl+b>。
pane
% 左右平分出两个窗格
" 上下平分出两个窗格
x 关闭当前窗格
{ 当前窗格前移
} 当前窗格后移
; 选择上次使用的窗格
o 选择下一个窗格,也可以使用上下左右方向键来选择
space 切换窗格布局,tmux 内置了五种窗格布局,也可以通过 ⌥1 至 ⌥5来切换
z 最大化当前窗格,再次执行可恢复原来大小
q 显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格


window
c 新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态
p 切换至上一窗口
n 切换至下一窗口
w 窗口列表选择,注意 macOS 下使用 ⌃p 和 ⌃n 进行上下选择
& 关闭当前窗口
, 重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id
0 切换至 0 号窗口,使用其他数字 id 切换至对应窗口
f 根据窗口名搜索选择窗口,可模糊匹配
session
如果运行了多次 tmux 命令则会开启多个 tmux 会话(session),在服务器上我们把 session 放到背景(detach)后断开ssh,程序仍会继续运行。
在 tmux 会话中,使用前缀快捷键 ⌃b 配合以下快捷键可操作会话:
$ 重命名当前会话
s 选择会话列表
d detach 当前会话,运行后将会退出 tmux 进程,返回至 shell 主进程
在 shell 主进程下运行以下命令可以操作 tmux 会话:
tmux new -s foo # 新建名称为 foo 的会话
tmux ls # 列出所有 tmux 会话
tmux a # 恢复至上一次的会话
tmux a -t foo # 恢复名称为 foo 的会话,会话默认名称为数字
tmux kill-session -t foo # 删除名称为 foo 的会话
tmux kill-server # 删除所有的会话
常见问题
tmux 还有许多其他的快捷键和命令,使用前缀快捷键 <Ctrl+b> + ? 可以查看所有的快捷键列表,该列表视图为 tmux copy 模式,该模式下可使用以下快捷键(无需加 <Ctrl+b> 前缀):
Meta v 上一页 (tmux 快捷键为 Emacs 风格,这里的 Meta 键可用 Esc 模拟)
q 退出 copy 模式
1.鼠标滚屏
在开了多个 pane 后发现没办法在里面滚动屏幕,你需要先使用 <Ctrl+b> + [ 快捷键进入 copy 模式,然后使用翻页、字符定位来选择需要的字符,效率远没有鼠标选择来的快。
因此 tmux 提供了一些个性化配置项来优化这些配置,首先在 shell 中运行 touch ~/.tmux.conf 新建用户配置文件。在文件中增加以下内容:
# 开启鼠标模式
set -g mode-mouse on
# 允许鼠标选择窗格
set -g mouse-select-pane on
# 如果喜欢给窗口自定义命名,那么需要关闭窗口的自动命名
set-option -g allow-rename off
# 如果对 vim 比较熟悉,可以将 copy mode 的快捷键换成 vi 模式
set-window-option -g mode-keys vi
配置文件修改完成后,可以 tmux kill-server 重启所有 tmux 进程,或者在 tmux 会话中使用 ⌃b : 进入控制台模式,输入 source-file ~/.tmux.conf 命令重新加载配置。
参考
tmux ,不只是 terminal multiplexer
十分钟学会 tmux
終端機 session 管理神器 — tmux

评论
发表评论