如何在云服务器上配置 tmux
关于 tmux
tmux是一个终端多路复用器。它允许您使用多个虚拟终端访问 tmux 终端。
tmux 的安装和基本使用已在其相关文章中描述。
本文重点介绍如何在云服务器上配置 tmux(使用 screen 时非常困难)。tmux 的可配置性是我们可以使用的另一个强大的工具。
配置文件
当 tmux 启动时,它会在你的主目录中查找名为 的文件.tmux.conf
。如果存在,则 tmux 使用该文件中设置的配置。
使用您最喜欢的文本编辑器,在您的主目录中打开一个名为 的新文件.tmux.conf
。
对于 tmux,以“#”开头的行是注释。
前缀键
前缀键是 tmux 中所有命令前面的组合键。默认情况下,前缀键是Ctrl-b
。这个组合键不仅在大多数键盘上按起来不舒服,而且还会与其他一些绑定(例如在 vim 中)冲突。
一种常见的替代方法是Ctrl-a
。这种更舒适的组合来自 screen,它在 tmux 诞生之前就使用过这个前缀。
我们可以在 tmux.conf 中添加一行,在 tmux 的所有会话中启用此功能:
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