如何在云服务器上配置tmux

来自菜鸟教程
跳转至:导航、​搜索

关于 tmux

tmux 是一个终端多路复用器。 它允许您使用多个虚拟终端访问一个 tmux 终端。

tmux的安装和基本使用在其相关文章中有介绍。

这篇文章的重点是在云服务器上配置 tmux(这在 screen 上是出了名的困难)。 tmux 的可配置性是我们可用的另一个强大工具。

配置文件

当 tmux 启动时,它会在您的主目录中查找名为 .tmux.conf 的文件。 如果存在,则 tmux 使用该文件中设置的配置。

使用您最喜欢的文本编辑器,在您的主目录中打开一个名为 .tmux.conf 的新文件。

对于 tmux,以“#”开头的行是注释。

前缀键

前缀键是 tmux 中所有命令之前的组合键。 默认情况下,前缀键是Ctrl-b。 这个组合键不仅在大多数键盘上按起来不舒服,而且还碰巧与其他一些绑定(例如在 vim 中)发生冲突。

一个常见的替代品是 Ctrl-a。 这个更舒服的组合来自 screen,它在 tmux 诞生之前就使用了这个前缀。

我们可以在 tmux 的所有会话中启用此功能,只需在 tmux.conf 中包含一行:

set-option -g prefix C-a

由于我们不再使用 Ctrl-b 作为前缀,我们应该禁用它:

unbind-key C-b

请注意,Ctrl-a 确实与 Emacs 文本编辑器冲突。

将前缀发送到嵌套的 tmux 会话

使用 tmux 一段时间后,您可能会开始使用 tmux 连接到您也使用 tmux 的远程云服务器。

尝试在远程会话中执行命令变得不可能,因为前缀被本地 tmux 会话拦截和处理。

幸运的是,tmux 有一个名为 send-prefix 的内置解决方案。 通常,send-prefix 绑定到 Ctrl-b,与我们的前缀键相同的组合键。 这意味着可以使用 Ctrl-b Ctrl-b 发送前缀。

但是我们只是取消绑定 Ctrl-b 因为它可能与其他应用程序冲突。 我们可以通过将 Ctrl-a 绑定到 send-prefix 来保持命令的精神(重复前缀):

bind-key C-a send-prefix

现在,将前缀发送到远程会话就像 Ctrl-a Ctrl-a 一样简单。

窗口编号

与窗格不同,窗口使用从零开始的索引。 0 键与 1 相距甚远,在大多数键盘上都很难按。

我们可以强制 tmux 对窗格等窗口进行编号,从 1 而不是 0:

set -g base-index 1

禁用转义序列延迟

tmux 支持转义序列。 这有时很方便,但更多时候它会妨碍,例如在使用 vim 甚至 shell 时。 特别是,tmux 在转义后等待半秒,以确定下一个键是否可能是函数或序列的一部分。

这通常是 tmux 的不良行为,因此我们可以禁用它:

set-option -sg escape-time 0

整体设置

按照本文中的所有步骤,一个好的入门 .tmux.conf 可能如下所示:

# Ctrl-b is a bad prefix key, use Ctrl-a instead
set-option -g prefix C-a
unbind-key C-b

# Also assign Ctrl-a to send the prefix to a remote session
bind-key C-a send-prefix

# Windows should be numbered from 1 like panes
set -g base-index 1

# Disable tmux waiting for an escape sequence
set-option -sg escape-time 0