在vim中如何映射<C-CR>键

3

尝试在vim中添加普通模式映射,使Control + Enter在光标位置上方插入换行符

:nmap <C-CR> O<Esc>

我发现这并不起作用 - 我漏掉了什么?


常见问题的替代方案:在Vim正常模式下插入空白行的命令 - Peter Rincker
2个回答

3

这可能与您的终端有关,而不是vim。您可以通过 C-V C-Enter 查看终端发送哪个键。很可能是一个换行符,您可以在vim中使用它作为<NL>

:nmap <NL> O<Esc>

当我运行上述键盘命令时,我会得到'^M' - 这是什么意思? - lfender6445
很确定^M<CR>,所以你可以试一下,但我认为那也仅仅是<kbd>Enter</kbd>。你正在使用Windows操作系统吗? - Explosion Pills

3
由于键盘输入的内部处理方式,今天通常情况下这不太可能实现;虽然在GVIM中这个特定映射可以工作,但在大多数终端中都不能工作。一些按键组合,如Ctrl + 非字母键无法映射,而Ctrl + 字母键Ctrl + Shift + 字母键无法区分。(除非您的终端为其发送不同的termcap代码,但大多数终端都不会这样做。)在插入或命令行模式下,尝试键入键盘组合。如果没有发生任何事情/未插入任何内容,则无法使用该键盘组合。这也适用于<Tab> /<C-I><CR> /<C-M> /<Esc> /<C-[>等。(唯一的例外是<BS> /<C-H>。)这是一个已知的痛点,并且是vim_dev和#vim IRC频道上各种讨论的主题。

一些人(首要是Paul LeoNerd Evans)希望解决这个问题(即使是在支持此功能的终端中的控制台Vim),并提出了各种建议

但是截至今天,尽管许多人表示希望在未来的Vim 8主要版本中实现这一点,但没有补丁或志愿者出现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接