首页 > 编程笔记 > Linux笔记 阅读:6

tmux是什么,tmux终端复用器入门教程(新手必看)

screen 是最初的终端多路复用器,目前仍在使用。除非由于你登录在远程环境中而不能安装其他多路复用器,那么你可能不应该使用 screen。一个原因是它不再被积极维护,另一个原因是它不太灵活,缺乏现代终端多路复用器所具有的许多功能。

tmux 是一个灵活而丰富的终端多路复用器,你可以根据自己的需要进行调整。

多路复用的概念

可以这样想,你通常做不同的事情,但这些事情可以归为一类。例如,你可能从事开源项目、撰写博客文章或文档、远程访问服务器、与 HTTP API 交互以测试内容等。这些任务可能每个都需要一个或多个终端窗口,并且你通常希望或需要同时在两个窗口中执行潜在的相互依赖的任务。

例如:
把所有这些例子都想象成逻辑上属于一起的事物,从持续时间来看,可以是短期的(几分钟),也可以是长期的(几天和几周)。这些任务的分组通常称为会话。

现在,如果你想要实现这种分组,有很多挑战:
为了实现这些任务,人们提出了在终端上覆盖多个窗口(以及会话,以对窗口进行分组)的想法—换句话说,就是对终端 I/O 进行多路复用。

tmux快速入门

如下图所示,在 tmux 中有三个核心元素与之交互,从粗粒度单元到细粒度单元:


图 1 tmux元素:会话、窗口和窗格


就像 screen 一样,在 tmux 中,你可以附加和分离一个会话。让我们从头开始启动一个名为 test 的会话:
$ tmux new -s test
使用上面的命令,tmux 作为服务器运行,你发现自己处于在 tmux 中配置的 shell 中,作为客户端运行。这种客户端/服务器模型允许你创建、进入、离开和销毁会话,并使用在其中运行的 shell,而不必考虑在其中运行(或失败)的进程。

tmux 使用 Ctrl+B 作为默认的键盘快捷键,也称为前缀或触发器。例如,要列出所有窗口,你可以按 Ctrl+B 然后 W,或者要展开当前(活动)窗格,你可以使用 Ctrl+B 然后 Z。

在 tmux 中,默认触发器是 Ctrl+B。为了改进流程,我将触发器映射到一个未使用的键,因此一次按键就足够了。我首先将触发器映射到 tmux 中的 Home 键,然后将 Home 键映射到 Caps Lock 键,方法是将 /usr/share/X11/xkb/symbols/pc 中的映射更改为 key <Caps> {[Home]};。

这种双重映射是我需要做的一种变通方法。根据你的目标键或终端,你可能不需要这样做,但我鼓励你将 Ctrl+B 映射到一个你可以轻松到达的未使用的键,因为你将每天多次按下它。

你现在可以使用下表中列出的任何命令来管理进一步的会话、窗口和窗格。表中列出了常见的 tmux 命令,按讨论的单元分组,从最宽范围(会话)到最窄范围(窗格)。

表:tmux命令参考表
目标 任务 命令
会话 新创建 :new -s NAME
会话 重命名 trigger + $
会话 列出所有会话 trigger + s
会话 关闭 trigger
窗口 新创建 trigger + c
窗口 重命名 trigger + ,
窗口 切换到 trigger + 1…9
窗口 列出所有窗口 trigger + w
窗口 关闭 trigger + &
窗格 水平分割 trigger + “
窗格 垂直分割 trigger + %
窗格 切换 trigger + z
窗格 关闭 trigger + x

另外,当按 Ctrl+B+D 时,可以分离会话。这实际上意味着你将 tmux 放入后台。

当你启动一个新的终端实例,或者你从一个远程的地方 ssh 到你的机器,你可以连接到一个现有的会话,所以让我们用之前创建的测试会话来做:
$ tmux attach -t test
附加到称为 test 的现有会话。如果你想从它的前一个终端分离会话,则需要提供 -d 参数。

现在你已经对如何使用 tmux 有了基本的了解,让我们将注意力转向配置和定制它。

我的 .tmux.conf 如下所示:
unbind C-b ①
set -g prefix Home
bind Home send-prefix
bind r source-file ~/.tmux.conf \; display "tmux config reloaded :)" ②
bind \\ split-window -h -c "#{pane_current_path}" ③
bind - split-window -v -c "#{pane_current_path}"
bind X confirm-before kill-session ④
set -s escape-time 1 ⑤
set-option -g mouse on ⑥
set -g default-terminal "screen-256color" ⑦
set-option -g status-position top ⑧
set -g status-bg colour103
set -g status-fg colour215
set -g status-right-length 120
set -g status-left-length 50
set -g window-status-style fg=colour215
set -g pane-active-border-style fg=colour215
set -g @plugin 'tmux-plugins/tmux-resurrect' ⑨
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'
run '~/.tmux/plugins/tpm/tpm'

首先安装 tpm,tmux 插件管理器,然后为插件触发 +I。这里使用的插件如下:
下图显示了我的 Alacritty 终端运行 tmux。你可以看到位于左上角的快捷键 0 到 9 的会话。


图 2 运行中的 tmux 实例,显示了可用会话

相关文章