tmux 犹如 screen,用来在控制台里打开多个窗口,以达到减少打开控制台的数目和快速切换的目的。算是一个效率工具。

tmux 有很多快捷键,这些快捷键用来完成不同的操作,如能灵活运用,可以达到提高效率的目的。

Session Manager

tmux里面的Session就像是一个工作台,每次打开tmux,其实就是打开一个 Session 。我们可以根据不同的使用场景来定义不同的 Session。例如我专门建立了一个叫做 blog 的 Session。用来做 blog 相关的工作(设置环境变量,打开文章,编译,上传等)。我主要用到如下命令来管理Session。

tmux new -s session_name 

创建一个 Session 名字叫做 session_name

tmux list-sessions (tmux ls)

列出当前有什么 Session 在后台

tmux attach -t session_name (tmux a -t session_name)

打开一个已经创建的叫做 session_name 的 Session。

tmux switch -t session_name

切换到session_name

tmux detach (c-b d)

临时退出 Session。也就是退出了 tmux

Windows

我们可以在 Session里面建立标签,也即是 Windows。每个 window 也有自己的名字。例如我在 blog 这个 Session 里面建立了两个 window 一个叫 serve 用来运行本地服务器,另一个叫 compile 用来编译 blog。我可以很方便的在两个 window 之间切换。其中相关的命令如下。

tmux new-window (c-b c)

创建一个新的 window

tmux select-window -t :0-9 (c-b 0-9)

每一个 window 都有一个索引,我们可以通过索引来切换window

tmux rename-window (c-b ,)

重命名 window。

Panes

除了可以创建 window,同时可以在每个 window 里面分割出不同的窗口,每个窗口就是 pane。相关操作如下

c-b %

分裂垂直窗口

c-b "

分裂水平窗口

c-b 方向键

切换pane

c-b {  or c-b }

移动 pane

c-b x

删除 pane

c-b z

全屏该 pane

copy and paste

c-b [

进入复制模式

使用 vi 模式或者 emacs 模式移动光标,具体需要配置。

space
enter

空格 开始选中内容, enter确定并退出

c-b ]

粘贴

my configuration

setw -g mode-keys vi

bind s split-window -h
bind v split-window -v

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

bind < resize-pane -L 10
bind > resize-pane -R 10
bind - resize-pane -D 10
bind + resize-pane -U 10

bind : command-prompt

set-option -g default-command "reattach-to-user-namespace -l zsh"