vim - 与 PageUp/PageDown 键组合的某些键映射不起作用
问题描述
我在 Manjaro 上使用rxvt-unicode
终端模拟器,我的以下两个映射.vimrc
不起作用,
nnoremap <C-PageUp> :tabprevious<CR>
nnoremap <C-PageDown> :tabnext<CR>
即使以下确实有效
nnoremap <C-t> :tabnew<CR>
解决方案
我认为您观察到的行为的原因正是这里描述的原因。
换句话说,像这样的东西(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
。
推荐阅读
- reactjs - Material-UI withStyles 不向道具添加类
- powershell - 如何通过按 Escape 来逃脱读取主机?
- ms-access - 过滤不同表单的不同查询字段
- git - Git 分支中引入的提交差异
- aws-lambda - 如何使用 micronaut-function-aws-api-proxy 处理多部分/表单数据文件上传
- javascript - 如何使用 history.push 在 React 中获取参数
- java - 我如何将此代码放入 4 种方法(矩阵加法、矩阵减法、矩阵乘法矩阵除法)和一个主要方法(称为驱动程序)
- cocoapods - 为什么 pod 目标构建设置 Swift 语言版本号不同,我们如何在 Xcode 中修复?
- javascript - 在使用云托管时,程序代码是否比编译后的 javascript 中的面向对象代码快得多?
- oracle - 如何在 oracle sql 中获取日文格式的日期(2008 年 12 月 31 日)