man tmux里有命令和它们对应的键的详细列表(也可以通过C-b+?来显示这个列表)。
常用的命令和他们对应的键,
? 列出所有命令的键
% 垂直分割当前pane
" 水平分割当前pane
z 让当前pane最大化;再按一次退出最大化
x 关闭当前pane;(也可以直接输入exit或者Ctrl+d)
方向键 pane见的导航
C-o 旋转当前window中的panes
c 新建window
, 重命名window,window的名字默认是当前pane的当前命令的名字,见manual的"NAMES AND TITLES"
p 显示前一个window
n 显示后一个
0-9 显示指定window
w 列出所有window
& 关闭当前window
d 断开当前session
D 断开前选择session
s 选择一个session来连接
$ 重命名当前session
( 让client连接到前一个session
) 让client连接到后一个session
: Enter the tmux command prompt.
tmux简介
上面的描述来自tmux的manual page (
man tmux
)。简单地说,tmux是一个可以在一个窗口里管理多个terminals的工具。(环境:OS X 10.11.4, tmux 2.2,iTerm2 3.0.2)
为什么用tmux
比如做Ruby on Rails项目时,你可能需要一个终端窗口(不管是terminal window还是terminal tab)打开vim编辑源码, 一个窗口打开sqlite3查询数据库,一个窗口看本地server的log或者通过byebug来debug,一个窗口用来输入git、rake之类的命令。 用tmux就可以在一个“screen”内同时管理这些terminal,而不用开五个terminal窗口互相切换。
通过ssh登录到远程主机上工作。通过tmux,你可以在断开ssh连接时,保留工作现场不丢失。
假如同时工作在两个不同类型的项目上,通过tmux可以用两个不同的tmux session来管理这两个项目的窗口。 通过切换session,可以很方便地切换到不同项目的工作现场。
安装
基本概念
一个session管理着一个或者多个terminal。一般来说,不同的项目、不同的工作主题等对应着不同的tmux session。 这样通过session就可以很方便地切换“工作环境”。一个session可以有一个或者多个window。 window可以进一步分成不同的pane。在一个时刻,整个“屏幕”只会被一个window占用。pane就是“屏幕”上的一块长方形区域。
tmux是基于server-client的。session信息放在server端,client连上server后可以显示、操作session。
基本使用
tmux
后可以接一个命令,比如新建一个session的命令是new-session
,输入命令的时候,可以不用输入完整的命令,可以只输入命令的开头几个字母,只要没有歧义就行(详见
man tmux
)。 如果输入有歧义,tmux也会提示你,常用的命令,
连上session后,client可以输入命令来控制tmux。 输入命令时,先敲prefix key(默认是
C-b
,就是Ctrl+b),然后跟命令对应的键。 比如想要水平分割当前的pane,先输入C-b
,再输入"
。man tmux
里有命令和它们对应的键的详细列表(也可以通过C-b
+?
来显示这个列表)。 常用的命令和他们对应的键,配置
tmux是可配置的。一般把配置信息放在
~/.tmux.conf
文件里。 可以根据自己的需求,慢慢地增加/修改配置信息;不用一开始就从网上拷贝一份很复制的配置。开启鼠标模式,在配置文件里加上下面的配置,然后
source-file
一下,打开鼠标可以通过鼠标来选择pane,调整pane的大小,也可以方便地在pane里滚动。
选择文字、拷贝和粘贴
按住
option
键(Linux上是shift
键),然后用鼠标左键选择文字(也可双击鼠标来选择文字);选中的同时文字也会被拷贝。 按住option
键,再按鼠标右键复制。其它
电脑重启后,所有的session都会丢失,tmux-resurrect这个工具可以保存session。
OS X可以考虑使用iTerm2来代替自带的“终端”程序。iTerm2和tmux有着更好的集成。
man tmux
里有详细的帮助文档,有时间可以看一看。如果你觉得这篇文章对你有用,可以微信扫一扫表示🙏 / If you find this post is useful to you, buy me 🍶 via Wechat