如何将 tmux 前缀绑定到 Super?

xen*_*ide 23 terminal-multiplexer tmux

我发现即使Ctrl+b是很emacs喜欢,但我明白这一点。我想知道我是否可以将它绑定到一个我不明智使用的键的单个按键上?即Super_L(也称为左 Windows 键。为什么我说 Super_Lxev在终端中启动并按下该键)

Gil*_*il' 18

Super_L是 X 键符。Tmux 在终端中运行。由您的终端模拟器将键符转换为字符序列。因此,您必须同时配置终端模拟器和 tmux。

查看 tmux 文档,前缀只能是带有可选修饰符的已知键名。因此,您可以将 tmux 前缀设置为您不使用的组合键,例如M-F12,并让您的终端M-F12在您按下 时发送字符序列Super_L。多做一点工作,您可以使用键盘可能没有的键(tmux 接受F13throughF20作为键名,但它们必须在 terminfo 中声明)。

在终端模拟器方面,您必须安排Super_L生成键序列\e\e[24~(for M-F12) 或\e[34~(for F20)(\e转义字符在哪里)。如何做到这一点取决于终端仿真器(有些没有足够的配置来做到这一点)。使用 xterm,它是通过 X 资源完成的:

! Make Super_L act as Meta+F12
XTerm.VT100.translations:       #override \
    <Key>Super_L:  string("\033\033[24~")
Run Code Online (Sandbox Code Playgroud)

您可能会遇到Super_L通常是修饰符的障碍,当需要非修饰符时,修饰键并不总是有效。如果你不想Super_L成为一个修饰符,你可以去掉它的修饰符,或者(不太容易混淆)为物理键使用不同的键符。这可以通过 xmodmap(老式且易于理解)、xkb(现代的、文档不足的、强大而复杂的方式)或通过您的桌面环境的 GUI 配置工具来完成。

  • @xenoterracide:要么我不明白你的问题,要么你不明白我的回答。`Super_L` 是一个 X 键符,所以你可能在某个地方有一个 X 服务器(如果你是从 Windows 登录的,我想你会将该键称为左 Windows 键)。Tmux 在终端中运行,并将其输入读取为字节,并将功能键转换为转义序列。远程登录是透明的,ssh 只传输组成转义序列的字节。 (3认同)