如何在vimrc中获取keymap的密钥名称?


8

在Emacs的,我可以按Ctrl-hk来描述一个关键。我可以获得关键名称,即使它未定义,例如,

C-x <C-M-end> is undefined

因此,我知道关键名称是C-x <C-M-end>

但是,如何获得Vim的关键名称?

我想为Ctrl-Shift-V和设置一个键盘映射Shift-Insert,但是我必须使用什么代码?

是否可以动态获取密钥?

Answers:


1

我能找到的最接近的describe-keyCtrl+ HK)是:map命令。它将列出所有映射。

您也可以运行:map <key name>,但必须<key>使用
key-notation中列出的特殊语法进行指定。

或者您可以尝试:mapCtrl+ V<key>,这应该让您只需按键而不需要使用特殊语法。

所以要绑定Ctrl+ Shift+ V,试试这个:

:map <C-S-v> whatever

要么

:mapCtrl+ V Ctrl+ Shift+V whatever

但请确保您的终端程序尚未将其用于粘贴等特殊功能,否则Vim将永远不会看到按键。

另请参阅map-alt-keys,它有助于解释您的Alt密钥是否应该写为<M-x><A-x>


它是Ctrl-h,k,而不是Ctrl-X,k表示杀死缓冲区。
XièJìléi2011年

对不起,修好了。
米克尔

我不确定是否MA将被映射到Alt。但<M-h>, <M-l>只是不工作。我不知道密钥名称是无效的,还是密钥事件尚未发送给Vim。没有日志,没有线索。
XièJìléi2011年

是的,Alt是困难的,因为大多数终端发送ESC,然后xAlt+x被按下,以及如何Vim的知道你没有按ESC然后x。基本上Alt只适用于Gvim。
米克尔

4

为了找出Vim中键或键组合的输出,我通常用“ :enew” 打开一个空白缓冲区,进入插入模式,按control-v,然后我要识别的键或键组合。这个control-v技巧也可以在:-command行上工作,因此定义测试映射相当容易。例如,“ :map control-v和键组合“ :echo 'it works'”。


0

只需键入Ctrl+ V即时按下您想要按的键。如果没有找到预期的结果(例如像<c-space><c-cr><M-i>,...),它只是意味着你使用vim,而不是使用gvim。vim理解键入的键的方式与终端的配置有关。gvim使用自己的定义,因此没有任何配置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.