因为工作原因,经常和命令行打交道,所以这里简单记录下我是如何使用 tmux 的。
打开一个 terminal,输入一些命令,通过命令与计算机交互。这个交互方式,称之为一次"会话"(session),人类与计算机之间的会话。
tmux 的主要作用就是可以在同一个终端窗口中创建多个会话,并且可以在这些会话中来回自由切换。
linux 和 mac 可以通过下面的命令安装:
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOS 或 Fedora
$ sudo yum install tmux
# Mac
$ brew install tmux
输入 tmux
即可创建一个新的会话,并且进入会话。
$ tmux
tmux 底部的状态栏会显示会话的相关信息:编号和名称
进入会话后,可以通过 ctrl + d
或者手动输入 exit
命令关闭 tmux 会话。
每次创建一个新的会话,tmux 都会给这个会话赋予一个编号,编号从 0 开始递增。也可以在新建会话时,给会话起名。
$ tmux new -s <session-name>
名称比编号更加直观。
要回到主 terminal 窗口,除了通过 exit
命令关闭会话,还可以通过快捷键 ctrl + b d
命令分离会话,也可以通过下面的命令分离会话:
$ tmux detach
tmux 有很多快捷键是通过前缀键触发的,一般为
ctrl + b
,按下ctrl + b
后需要松开键盘,然后再按下一个单独的功能键。必须再按下ctrl + b
后松开,否则快捷键不会生效。
通过 tmux detach
分离的会话,可以再次接入。tmux attach
命令用于重新接入某个已存在的会话。
# 使用会话编号
$ tmux attach -t <session-id>
# 使用会话名称
$ tmux attach -t <session-name>
再主终端窗口,可以列出所有 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>
我最喜欢的功能是 tmux 的窗格管理。再一个会话窗口中,分离窗口创建窗格。
# 划分上下两个窗格
$ tmux split-window
# 划分左右两个窗格
$ tmux split-window -h
可以通过 tmux select-pane
命令用来移动光标位置。
# 光标切换到上方窗格
$ tmux select-pane -U
# 光标切换到下方窗格
$ tmux select-pane -D
# 光标切换到左边窗格
$ tmux select-pane -L
# 光标切换到右边窗格
$ tmux select-pane -R
可以通过 tmux swap-pane
交换窗格的相对位置。
# 当前窗格上移
$ tmux swap-pane -U
# 当前窗格下移
$ tmux swap-pane -D
上面的功能配上快捷键使用非常方便,这也是为什么 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 的 console 支持划分窗格功能,所以可以安装 Tmux Keybinding
插件,它可以支持部分 tmux 的快捷键操作 vscode console,例如使用 ctrl+b %
划分窗格,使用 ctrl+b <arrow-key>
进行窗口的跳转。
(完)