首页 > 解决方案 > 与 PageUp/PageDown 键组合的某些键映射不起作用

问题描述

我在 Manjaro 上使用rxvt-unicode终端模拟器,我的以下两个映射.vimrc不起作用,

nnoremap <C-PageUp>   :tabprevious<CR>
nnoremap <C-PageDown> :tabnext<CR>

即使以下确实有效

nnoremap <C-t>        :tabnew<CR>

标签: vimurxvt

解决方案


我认为您观察到的行为的原因正是这里描述的原因。

换句话说,像这样的东西(rhs 是什么并不重要)

nnoremap <C-PageUp> :echo "hello"<CR>

将无法工作,因为 Vim 现在不知道哪个转义序列对应于 keycode <C-PageUp>

因此,您可以为其提供对应于 的转义序列Ctrl-PageUp,如

nnoremap ^[[5^ :echo "hello"<CR>

其中转义序列的前两个字符 ,^[是对应于的单个单元的一部分Escape(这就是转义序列的原因)。

您可以通过点击从插入模式获取整个序列(顺便说一下,这可能与我在终端中的不同) Ctrl+VCtrl+PageUp;但是,鉴于 的含义^[,您也可以使用Ctrl+VEscape然后[5^手动键入。

不幸的是, putset <C-PageUp>=^[[5^会导致 error E518。我不知道为什么。

另一方面,另一种解决方案如下(再次描述here

set <F37>=^[[5^
nnoremap <F37> :echo "ciao"<CR>

<F37>Vim 提供的额外功能键码之一在哪里。我不知道这东西在哪里:help


推荐阅读