使用教程网上相关的Tmux教程很多,可是看完感觉不是太细就是太散,有一些不常用的操作、快捷键也写出来了,感觉重点不够突出。所以自己总结一份Tmux使用教程。可以根据目录寻找需要的操作

Tmux是什么?

Tmux是一个终端复用器(terminal multiplexer),属于常用的开发工具,学会了之后可以大大的提高工作效率。

  1. 基本概念
    在使用tmux之前我们先了解关于tmux的几个名词:

session,会话(任务)
windows,窗口
pane,窗格
关于session,很多人把session成为会话,但我觉得叫任务更适合一些。

在普通的终端中,窗口和其中由于session(任务)而启动的进程是连在一起的,关闭窗口,session就结束了,session内部的进程也会终止,不管是否运行完。但是在具体使用中,我们希望当前的session隐藏起来,在终端中做其他事情,但是又不希望session及其进程被关闭。这样就需要用到tmux,对session进行解绑。之后再想继续出来这个session的时候,再次绑定就可以回到之前的工作状态。

对于window可以理解为一个工作区,一个窗口。

对于一个session,可以创建好几个window,对于每一个窗口,都可以将其分解为几个pane小窗格。

所以,关于session、window、pane的关系是:
[pane∈window]∈session

  1. 安装
# Ubuntu or Debian
sudo apt-get install tmux

# CentOS or Fedora
sudo yum install tmux

# Mac
brew install tmux

session操作

  1. 启动
    新建session,可以在terminal上输入tmux命令,会自动生成一个id为0的session
tmux

也可以在建立时显式地说明session的名字,这个名字可以用于解绑后快速的重新进入该session:

tmux new -s your-session-name
  1. 分离
    在tmux窗口中,按下ctrl+b d或者输入以下命令,就会将当前session与窗口分离,session转到后台执行:
tmux detach
  1. 退出
    如果你想退出该session,可以杀死session:
tmux kill-session -t your-session-name

当然,也可以使用ctrl+d关闭该session的所有窗口来退出该session。

  1. 绑定、解绑、切换session
    假设现在正处于session1,使用分离操作就是将session1进行解绑:
tmux detach

而如果你想再次绑定session1,可以使用命令:

tmux attach -t your-session-name

切换到指定session:

tmux switch -t your-session-name
  1. 重命名session
tmux rename-session -t old-session new-session

window操作

一个session可以有好几个window窗口。

  1. 新建窗口tmux new-window
# 新建一个指定名称的窗口
tmux new-window -n your-window-name
  1. 切换窗口
    命令就不记了,使用快捷键更方便:
热键 含义
ctrl+b c 创建一个新窗口(状态栏会显示多个窗口的信息)
ctrl+b p 切换到上一个窗口(按照状态栏的顺序)
ctrl+b n 切换到下一个窗口
ctrl+b w 从列表中选择窗口(这个最好用)
  1. 重命名窗口
    执行:
tmux rename-window -t old_name new_name

pane操作

tmux可以将一个窗口分为几个窗格(pane),每个窗格运行不同的命令。

  1. 划分窗格
# 划分为上下两个窗格
tmux split-window

# 划分左右两个窗格
tmux split-window -h

其实划分窗格pane使用快捷键更方便,如果你当前pane正在运行程序不就没法使用命令了嘛。

热键 含义
ctrl+b % 左右划分
ctrl+b " 上下划分
  1. 光标位置
    使用语句太麻烦了,使用快捷键最好:ctrl+b arrow-key(方向键):光标切换到其他窗格4.3 交换窗格位置
# 当前窗格往上移
tmux swap-pane -U

# 当前窗格往下移
tmux swap-pane -D
  1. 关闭窗格
    | 热键 | 含义 |
    | :-- | :-- |
    | ctrl+d | 关闭窗格 |

如果只有一个窗格就是关闭window哦

其他操作

# 列出所有快捷键,及其对应的 Tmux 命令
$ tmux list-keys

# 列出所有 Tmux 命令及其参数
$ tmux list-commands

# 列出当前所有 Tmux 会话的信息
$ tmux info

# 重新加载当前的 Tmux 配置
$ tmux source-file ~/.tmux.conf
  1. tmux上下翻屏
    使用快捷键ctrl+b [ ,就可以通过方向键上下移动使用PageUp和PageDown可以实现上下翻页

常见问题

vim配色修复

终端复用器,USE里有个vim-pager似乎是vim helper用到的,用vim就加上了.
不过tmux中启动vim,vim的配色方案可能不对,所以需要修改下tmux配置

vim ~/.tmux.conf
set -g default-terminal "screen-256color"

以后用 tmux -2 启动,vim的颜色就能正常显示了
为了方便,修改~/.bashrc

alias tmux='tmux -2'

解决cygwin root权限无法启动tmux

直接执行tmux报错:
can’t create socket: Permission denied

可以使用:

tmux -S /tmp/tmux-[uid]/default
echo $UID
tmux -S /tmp/tmux-0/default

为了方便操作,直接添加到bashrc里

alias tmux='tmux -S /tmp/tmux-197608/default'