我想在插入模式下将 Ctrl-M 映射到 Ctrl-N。如果我只是做imap <C-M> <C-N>
然后 Ctrl-M 确实开始像 Ctrl-N 一样运行,但是然后按 Enter 也一样。我想按 Return 继续插入新行,同时让 Ctrl-M 插入下一个关键字完成匹配,就像 Ctrl-N 一样。那可能吗?
编辑:
我设法修改了 Vim 的源代码以无条件地将 Ctrl-M 视为 Ctrl-N 而不会影响 Return。在这样做的同时,我也意识到,如果不更改源代码,确实没有办法做到这一点,因为实际按下的内容(Enter 或 Ctrl-M)之间的区别似乎在按键处理过程中过早地消失了。它发生在依赖于平台的 UI 模块中,按键处理中的可移植代码部分已经不知道是否实际按下了 Ctrl-M 或 Return 导致键码 13。
我在 FreeBSD (GTK) 和 Windows 的 GUI 模块中进行了修改,因为这些是我最常使用 gvim 的平台。
附言如果有人想实现同样的目标,请随时给我留言。
附言对于所有提供此问题答案的人:非常感谢!你的评论对我帮助很大。
最佳答案
:help key-notation
明确指出 CTRL-M 等同于 Enter。这是因为回车是 ASCII 字符号。 13 和 M 是字母表中的第 13 个字母。
关于Vim:如何在不影响 Return 按键的情况下映射 Ctrl-M?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3935970/