日期:2023年6月17日标签:DeveloperHandbook

tmux 极简使用 #

因为工作原因,经常和命令行打交道,所以这里简单记录下我是如何使用 tmux 的。

打开一个 terminal,输入一些命令,通过命令与计算机交互。这个交互方式,称之为一次"会话"(session),人类与计算机之间的会话。

tmux 的主要作用就是可以在同一个终端窗口中创建多个会话,并且可以在这些会话中来回自由切换。

安装 #

linux 和 mac 可以通过下面的命令安装:

# Ubuntu 或 Debian
$ sudo apt-get install tmux

# CentOS 或 Fedora
$ sudo yum install tmux

# Mac
$ brew install tmux

tmux 会话管理 #

(1) 创建会话 #

输入 tmux 即可创建一个新的会话,并且进入会话。

$ tmux

tmux 底部的状态栏会显示会话的相关信息:编号和名称 tmux 会话

进入会话后,可以通过 ctrl + d 或者手动输入 exit 命令关闭 tmux 会话。

每次创建一个新的会话,tmux 都会给这个会话赋予一个编号,编号从 0 开始递增。也可以在新建会话时,给会话起名。

$ tmux new -s <session-name>

名称比编号更加直观。

(2) 分离会话 #

要回到主 terminal 窗口,除了通过 exit 命令关闭会话,还可以通过快捷键 ctrl + b d 命令分离会话,也可以通过下面的命令分离会话:

$ tmux detach

tmux 有很多快捷键是通过前缀键触发的,一般为 ctrl + b,按下 ctrl + b 后需要松开键盘,然后再按下一个单独的功能键。必须再按下 ctrl + b 后松开,否则快捷键不会生效。

(3) 接入会话 #

通过 tmux detach 分离的会话,可以再次接入。tmux attach 命令用于重新接入某个已存在的会话。

# 使用会话编号
$ tmux attach -t <session-id>
# 使用会话名称
$ tmux attach -t <session-name>

(4) 显示所有会话 #

再主终端窗口,可以列出所有 tmux 会话,显示每个会话的编号和名称。

$ tmux list-session
0: 1 windows (created Sat Jun 17 10:37:24 2023)
1: 1 windows (created Sat Jun 17 10:55:46 2023)
$ tmux ls
0: 1 windows (created Sat Jun 17 10:37:24 2023)
1: 1 windows (created Sat Jun 17 10:55:46 2023)

关闭会话 #

再当前会话中通过 exit 命令可以关闭当前会话,也可以通过 tmux kill-session 关闭指定会话。

$ tmux kill-session -t <session-id>
$ tmux kill-session -t <session-name>

窗格管理 #

(1)划分窗格 #

我最喜欢的功能是 tmux 的窗格管理。再一个会话窗口中,分离窗口创建窗格。

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

tmux 窗口划分

(2)切换光标位置 #

可以通过 tmux select-pane 命令用来移动光标位置。

# 光标切换到上方窗格
$ tmux select-pane -U

# 光标切换到下方窗格
$ tmux select-pane -D

# 光标切换到左边窗格
$ tmux select-pane -L

# 光标切换到右边窗格
$ tmux select-pane -R

(3)交换窗格位置 #

可以通过 tmux swap-pane 交换窗格的相对位置。

# 当前窗格上移
$ tmux swap-pane -U

# 当前窗格下移
$ tmux swap-pane -D

用快捷键优化你的 tmux 工作流 #

上面的功能配上快捷键使用非常方便,这也是为什么 tmux 广受欢迎的原因。这里列出我常用的快捷键。

  • ctrl+b s:在会话窗口中显示所有会话,并可以进行选择切换会话。
  • ctrl+b d:分离当前会话,回到主窗口。
  • ctrl+b %:划分左右两个窗格。
  • ctrl+b ":划分为上下连个窗格。
  • ctrl+b <arrow key>:按照方向键指示的方向,切换光标至特定方向的窗格。
  • ctrl+b x:关闭当前窗格。
  • ctrl+b z:将当前窗格全屏显示,再使用一次恢复原来的大小。

alias 命令简化 tmux 命令 #

可以在 .bashrc 文件中使用 alias 命令简化 tmux 的命令。

例如:

alias tnew='tmux new -s'
alias tls='tmux ls'
alias td='tmux detach'
alias ta='tmux attach -t'
alias tkss='tmux kill-session -t'

vscode 中的 tmux 插件 #

vscode 的 console 支持划分窗格功能,所以可以安装 Tmux Keybinding 插件,它可以支持部分 tmux 的快捷键操作 vscode console,例如使用 ctrl+b % 划分窗格,使用 ctrl+b <arrow-key> 进行窗口的跳转。

(完)

目录