繁体   English   中英

在vim中,enter被映射到ctrl键自定义键映射

[英]in vim, enter is being mapped to a ctrl key custom key map

我在使用ctrl键的vim中的键盘映射遇到了一些奇怪的行为。 我猜这有一个简单的原因和解决方案,但我只是看不到它。

在重构文本的编辑过程中,我发现自己输入了类似的内容

:math:`x` 

经常(这个:数学:角色会导致刻度内的任何内容被排版为例如乳胶输出中的数学)。

我想映射一个像m这样的键来输入:math:``进入文本并将光标定位在刻度内。

我做到了这一点

map m i:math:``ha

这似乎工作正常。

但是,我希望能够在插入模式下使用此映射。 为此,我认为使用ctrl + m是最好的。 我弄完了

imap <c-m> :math:``ha

虽然是正确输入:数学:``和定位蜱内光标,当我做CTRL + M,麻烦的是,在这之后,每次我按在插入模式输入时,它运行相同的命令,如果我输入CTRL + m 换句话说,现在进入插入模式似乎映射到

:math:``ha

同样。

看起来它肯定与使用ctrl键有关。 如果我按如下方式绑定例如F5

imap <F5> :math:``ha

一切都好。

我可以使用例如F5键并为自己节省更多麻烦,但我想知道将来会发生什么。

在我丢失的键映射中使用ctrl键有什么基本的东西吗?

谢谢,

您必须为映射使用不同的控件组合,例如<Cg>

由于键盘输入在内部处理的方式,遗憾的是,如果没有这些副作用,即使在GVIM中也是如此。 某些键组合(如Ctrl +非字母)无法映射,而Ctrl +字母与Ctrl + Shift +字母无法区分。 (除非您的终端为其发送不同的termcap代码,但大多数情况下都没有。)这也适用于<Tab> / <CI><CR> / <CM> / <Esc> / <C-[>等。 (唯一的例外是<BS> / <CH> 。)这是一个众所周知的痛点,也是关于vim_dev和#vim IRC频道的各种讨论的主题。

有些人(最重要的是Paul LeoNerd Evans)希望解决这个问题(即使是支持这种情况的终端中的控制台Vim),并提出了各种提案,cp。 http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

但截至今天,尚未有任何补丁或志愿者挺身而出,尽管许多人表示希望在未来的Vim 8主要版本中使用它。

如果你做了

:h keycodes

你会看见:

notation    meaning         equivalent  decimal value(s)    ~
-----------------------------------------------------------------------
....

<CR>        carriage return     CTRL-M   13 *carriage-return*
<Return>    same as <CR>                *<Return>*
<Enter>     same as <CR>                *<Enter>*

所以它告诉, <cm><Enter>相同(相同的键码13)

您也可以在shell中进行测试,例如,输入ls然后<Enter> <cm>而不是<Enter>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM