Vimscript imap ctrl错误

Vimscript imap ctrl错误,vim,Vim,我是vimscrip的新手。我正在试验.vimrc中的一些代码来定制我的vim文本编辑器 这是我的全部代码: map m dd vmap a Gy imap <c-i> #include iabbrev LOL Mark was here autocmd VimEnter * echo "Welcome to vim :)" if strftime("%H") < 12 set background=light else set background=dark

我是vimscrip的新手。我正在试验.vimrc中的一些代码来定制我的vim文本编辑器

这是我的全部代码:

map m dd
vmap a Gy
imap <c-i> #include
iabbrev LOL Mark was here
autocmd VimEnter * echo "Welcome to vim :)"

if strftime("%H") < 12
    set background=light
else
    set background=dark
endif
mapmdd
vmap a Gy
imap#包括
Iabrev LOL Mark在这里
autocmd VIMCENTER*echo“欢迎使用vim:)”
如果strftime(“%H”)<12
设置背景=灯光
其他的
设置背景=暗
恩迪夫
除了
imap#include
之外,其他一切都能正常工作

如果我在插入模式下键入
CTRL+I
,它会像应该的那样写入
#include

但是,如果我在插入模式下按下
选项卡
,它也会写入
#include


我不明白为什么会这样。有人建议吗?谢谢

这不是一个bug,这是一个不幸的设计限制。

由于键盘输入是在内部处理的,不幸的是,即使在GVIM中,这在今天也不可能实现。某些组合键(如Ctrl+非字母键)无法映射,并且无法区分Ctrl+字母与Ctrl+Shift+字母。(除非您的终端为其发送了不同的termcap代码,而大多数情况下不会)。在插入或命令行模式下,请尝试键入组合键。如果未插入任何操作,则不能使用该组合键。这也适用于
/
/
/
等(唯一的例外是
/
),这是一个已知的痛点,也是关于vim#u dev和#vim IRC频道的各种讨论的主题

一些人(最重要的是Paul LeoNerd Evans)希望解决这一问题(即使是支持这一点的终端中的console Vim),并提出了各种建议,cp

但是到今天为止,还没有任何补丁或志愿者出现,尽管许多人表示希望在未来的Vim 8主要版本中有此功能。

是无法区分的。您需要选择另一个快捷方式。例如,
无法区分,或者我可以执行
(如int
ctrl+m
)吗?
无法区分。您应该尝试映射:
:帮助mapleader