我是 GNU Screen 的新手,到目前为止我很喜欢它。但是有些功能我无法像在 tmux 中那样运行。
我想让 Ctrl-a“箭头键”改变重点在我的窗口之间。我的终端窗口通常有很多分割。
我搜索了好久,但还是没能找到一个可行的配置。注意,我不想在窗口之间切换,只想切换焦点。
如果有人能向我混乱的大脑解释“bind”和“bindkey”之间的区别,我将获得加分。
干杯
答案1
由于: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
根据您的终端和设置,您需要在“^A”对你来说可能会有所不同。要确定这些代码是什么,我更喜欢使用vim
;打开它,然后按i进入编辑模式,然后按ctrlv获取原始输入,然后按下有问题的键或组合键***。
当你使用我的方法时,你需要输入你的ctrlarrowKey命令相当迅速;screen
如果在按键之间暂停太久,则停止监听自定义绑定。如果它过期太快,请使用:bindkey -t
而不是:bindkey
来禁用计时器。
* 注意不像,屏幕vim
不会喜欢如果你插入实际的元字符转义到“ .screenrc”或您可能获取的其他文件中;只需使用文字、单独的“^”和“[”,而不是可以输出的奇怪的组合版本vim
(至少,这似乎对我来说搞砸了)。
cat
** 有些人通过在终端中运行(自行运行)然后按下相关键(在使用退出之前)来确定特殊键码ctrlc。我不使用这种方法,所以 YMMV。