在 GNU Screen 中绑定箭头键

big*_*ums 6 shortcut-keys gnu-screen

我是 GNU Screen 的新手,到目前为止我很喜欢它。但是,有些事情我无法像在 tmux 中那样工作。

我想让它使 Ctrl-a“箭头键”改变我的窗口之间的焦点。我的终端窗口中通常有很多拆分。

我四处搜索,但找不到有效的配置。注意我不想在窗口之间切换,只想切换焦点。

如果有人可以向我麻木的大脑解释“绑定”和“绑定密钥”之间的区别,那就加分了。

干杯

koy*_*yae 7

由于:bind不会接受像箭头键这样的奇怪的虚拟字符——只有具有 ASCII 代码或类似东西的按键ctrlthingThatHasAsciiCode——我认为使用:bindkey是获得你想要的东西的最简单方法。对我来说,以下内容在 xterm 中的 GNU screen 4.06.01 下工作,可以添加到“~/.screenrc”(仅影响您)或“/etc/screenrc”(适用于系统范围):

# ctrlA then right-arrow-key jumps active cursor one pane to the right:
bindkey "^A^[OC" focus right

# ctrlA then left-arrow-key jumps active cursor one pane to the left:
bindkey "^A^[OD" focus left

# ctrlA then up-arrow-key jumps active cursor one pane above current:
bindkey "^A^[OA" focus up

# ctrlA then up-arrow-key jumps active cursor one pane below current:
bindkey "^A^[OB" focus down
Run Code Online (Sandbox Code Playgroud)

根据您的终端和设置,您需要在“^A”之后放置的代码可能因您而异。要确定这些代码是什么,我更喜欢使用vim; 打开它,然后按i进入编辑模式,然后按ctrlv获取原始输入,然后按有问题的键或组合键 * **。

当你使用我的方法时,你需要ctrlarrowKey相当迅速地输入你的命令;screen如果您在两次击键之间暂停太长时间,则会停止侦听自定义绑定。如果它过期太快,请使用:bindkey -t而不是:bindkey禁用计时器。

* 请注意,in不同vim,如果您将实际的元字符转义插入到“.screenrc”或您可能获取的其他文件中,则 screen 不会喜欢它;只需使用文字、单独的 '^' 和 '[',而不是vim可以输出的奇怪的组合版本(至少,这对我来说似乎把事情搞砸了)。

** 有些人cat通过在终端中运行(自己)来确定特殊的键码,然后按下有问题的键(在使用ctrlc退出之前)。我不使用这种方法所以 YMMV。