tmux是一个开源的终端复用器,类似于screen(参考我的另一篇博客:screen命令行会话管理),
允许用户在一个终端窗口中访问多个独立的终端会话。它非常适合于远程工作和多任务处理,因为它允许用户在一个窗口中保持多个终端会话的运行,即使在网络连接断开后也能保持会话的活跃状态。以下是
tmux
的一些主要特点:
会话管理:
tmux
允许你创建多个会话,每个会话可以包含多个窗口。你可以在这些会话之间自由切换,而不会中断任何正在运行的进程。窗口和窗格:在
tmux
中,你可以在一个窗口中垂直或水平分割多个窗格,每个窗格都可以独立运行不同的命令。可恢复性:
tmux
可以保存和恢复会话,这意味着即使关闭终端或计算机,你也可以在任何时候恢复你的工作状态。共享会话:
tmux
支持会话共享,你可以邀请其他用户加入你的会话,这对于协作工作非常有用。滚动缓冲区:
tmux
提供了一个滚动缓冲区,允许你查看之前在终端中的输出,即使那些输出已经超出了当前屏幕的范围。自定义和脚本:
tmux
支持自定义配置和脚本,用户可以根据需要调整快捷键、颜色方案和其他设置。跨平台:
tmux
可以在多种操作系统上运行,包括 Linux、macOS 和 BSD 系统。命令行界面:
tmux
提供了一个强大的命令行界面,允许你执行各种操作,如创建、切换、重命名会话和窗口等。状态栏:
tmux
有一个状态栏,显示当前会话、窗口和窗格的信息,以及系统时间等。兼容性:
tmux
与大多数终端模拟器兼容,包括 GNOME Terminal、iTerm2、Konsole 等。
目录
1. 安装
可以从源码(https://github.com/tmux/tmux)编译安装:
克隆下来,进入目录,并执行以下命令:
./configure && make
sudo make install
也可以直接通过命令行安装:
Platform | Install Command |
---|---|
Arch Linux | pacman -S tmux |
Debian or Ubuntu | apt install tmux |
Fedora | dnf install tmux |
RHEL or CentOS | yum install tmux |
macOS (using Homebrew) | brew install tmux |
macOS (using MacPorts) | port install tmux |
openSUSE | zypper install tmux |
更多安装方式,可参考:https://github.com/tmux/tmux/wiki/Installing。
2. 基本使用
tmux --help
usage: tmux [-2CDlNuVv] [-c shell-command] [-f file] [-L socket-name]
[-S socket-path] [-T features] [command [flags]]
补充说明:涉及到快捷键的,需要先按 “
Ctrl-b
”,然后松开,再按后面的其他按键!!!这一点和screen不一样,screen是同时按。
-
会话相关命令:
tmux new-session -d -s mysession
:创建一个后台运行的命名会话。tmux rename-session -t mysession newname
:重命名会话。tmux kill-server
:杀死所有tmux
会话和服务器。- tmux ls 或者 tmux list-sessions: 列出当前所有会话。
- tmux attach:重新连接到最近的会话。
- tmux attach-session -t session_name_or_number: 如果有多个会话,可以使用此命令指定会话名称或编号。
Ctrl+b $
:输入新的会话名称,重命名。
-
窗口相关命令:
Ctrl-b c
:创建一个命名的窗口。Ctrl-b window_number
:选择一个命名的窗口。Ctrl-b ,: 重命名窗口。
Ctrl-b &
:关闭当前窗口;会提示是否关闭,按y确认关闭或按n取消。
-
窗格相关命令:
-
创建新的窗格
-
水平分割:
Ctrl+b
,然后按%
。 -
垂直分割:
Ctrl+b
,然后按"
。
-
-
切换窗格
-
向左切换:
Ctrl+b
,然后按h
。 -
向右切换:
Ctrl+b
,然后按l
。 -
向上切换:
Ctrl+b
,然后按k
。 -
向下切换:
Ctrl+b
,然后按j
。 -
按编号切换:
Ctrl+b
,然后按窗格编号(数字键)。
-
-
调整窗格大小
-
增大窗格宽度:
Ctrl+b
,然后按Right Arrow
。 -
减小窗格宽度:
Ctrl+b
,然后按Left Arrow
。 -
增大窗格高度:
Ctrl+b
,然后按Down Arrow
。 -
减小窗格高度:
Ctrl+b
,然后按Up Arrow
。
-
-
关闭窗格
-
按
Ctrl+b
,然后按x
,确认后关闭当前窗格。
-
-
交换窗格位置
-
与左侧窗格交换:
Ctrl+b
,然后按{
。 -
与右侧窗格交换:
Ctrl+b
,然后按}
。
-
-
全屏切换
-
放大当前窗格:
Ctrl+b
,然后按z
。 -
再次按
Ctrl+b
+z
,恢复默认布局。
-
-
-
复制模式相关命令:
Ctrl-b [Space]
:开始选择文本。Ctrl-b w
:复制模式中选择单词。Ctrl-b q
:退出复制模式。
-
状态栏和消息:
tmux display-message
:显示消息。tmux display-panes
:显示窗格布局。
-
配置相关命令:
tmux setw -g window-size 30
:设置全局窗口大小。tmux setw -g status on
:开启或关闭状态栏。
-
脚本和自动化:
tmux source-file filename
:从文件中读取命令执行。tmux wait-for -S session_id
:等待会话创建完成。
-
其他命令:
tmux lock-client
:锁定客户端。tmux lock-session -t mysession
:锁定特定会话。
3. 自定义快捷键
可以通过编辑 ~/.tmux.conf
文件来自定义快捷键。例如:
# 将前缀键从 Ctrl+b 改为 Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# 自定义快捷键
bind h select-pane -L
bind l select-pane -R
bind k select-pane -U
bind j select-pane -D
参考:
1. https://en.wikipedia.org/wiki/Tmux
2. https://github.com/tmux/tmux
3. https://github.com/tmux/tmux/wiki/Installing