我在单用户文本模式下运行 Linux(如这里所述)。Ctrl+PgUp
并且Ctrl+PgDn
表现不如预期。使用cat -v -
显示终端代码,我看到PgUp
和Ctrl+PgUp
都产生相同的代码^[[5~
。在图形模式下执行同样的事情,我看到PgUp
=>^[[5~
和Ctrl+PgUp
=> ^[[5;5~
(并且两个键都按预期工作)。因此我推测:
- 这不是硬件问题
- 映射
PgUp
=>^[[5~
正在按预期工作 - 问题
Ctrl+PgUp
看起来就像是PgUp
一旦到达终点站。
对于我的用例(Vim),我可以配置PgUp
为被视为Ctrl+PgUp
,但如果可能的话,我希望它们具有不同的行为。
我可以编辑一些配置来解决这个问题吗?在字符序列到达终端之前,是否有任何东西会修改它们?
进一步调查的更多记录:
- 我不需要启动到文本模式,只需进入 tty1 (
Ctrl+Alt+F1
) 即可重现此情况。 - 我可以在另一台机器上重现它。
- 按照 dirkt 的建议,我运行
echo $TERM
并得到了linux
。
答案1
这个有用的答案让我找到了解决方案。我的默认键盘映射(从 获得sudo dumpkeys
)包含
keycode 104 = Prior
...
string Prior = "\033[5~"
我补充道
control keycode 104 = F105
...
string F105 = "\033[5;5~"
对于 也类似PgDn。请注意,别名不能是任意字符串;它必须是 列出的键符之一sudo dumpkeys -l
,因此我选择了未使用的 F105。
现在在图形模式下cat -v -
显示^[[5;5~
+ 。Vim 仍然没有按预期做出反应(Ctrl我PgUp不确定为什么,因为它在图形模式下工作),但至少Ctrl+PgUp产生了与 不同的控制序列,我像往常一样PgUp重新映射它:.vimrc
nnoremap ^[[5;5~ :tabp<Enter>