我要地图Ctrl- M到Ctrl- N插入模式.如果我根本就imap <C-M> <C-N>那么Ctrl- M也开始表现就像Ctrl- N,但随后按Enter不一样的好.我想按Return键继续插入新行,同时make Ctrl- M插入下一个关键字完成匹配就像Ctrl- N确实如此.那可能吗?
编辑:我设法修改Vim的源代码,无条件地处理Ctrl- Mas Ctrl- N而不影响Return.在这样做的同时,我也意识到在没有源代码更改的情况下确实没有办法做到这一点,因为实际上被压缩的东西之间的区别 - Enter或Ctrl- M似乎在按键处理中过早消失.它发生在依赖于平台的UI模块中,并且按键处理中的可移植代码部分已经不知道是否Ctrl- M或者实际按下了返回导致密钥代码13的返回.
我的修改是在FreeBSD(GTK)和Windows的GUI模块中,因为那些是我最常用的gvim平台.
PS如果有人想要实现同样的目标,请随时给我留言.
PPS对所有提供这个问题答案的人:非常感谢!你的评论给了我很多帮助.
如果您使用的是 Windows,并且活动窗口是 vim,则可以在插入模式下使用 Autohotkey 重新映射 Ctrl-M。
ahk 脚本可能看起来像这样:
#IfWinActive, Write: ahk_class GVIM
^M::^N
Run Code Online (Sandbox Code Playgroud)
或者,您可以考虑提高盲打技能(我怀疑您想听到这个解决方案,但我仍然认为这是一个有效的建议)以避免混淆 Ctrl-M 和 Ctrl-N。
如果您使用某种风格的 Linux,我不确定哪些工具可以相当于 autohotkey。
另一种选择是映射一个完全不同的键来让您执行自动完成,而不是使用 ctrl-n,例如 Ctrl-K: :inoremap <c-k> <c-n>