【问题标题】:mapping already exists for ^I in vimvim 中 ^I 的映射已经存在
【发布时间】:2010-08-30 14:13:59
【问题描述】:

我在 vimrc 文件中添加了以下几行,以便我可以使用 s-tab 进行缩进

map <esc>[Z <s-tab>
ounmap <esc>[Z

添加后,我收到以下错误。我使用 SnippetsEmu 插件

Error detected while processing function <SNR>15_SnipMapKeys:
line   10:
E227: mapping already exists for ^I

我该如何解决这个冲突。为什么会发生这种情况

【问题讨论】:

  • ^I 是一个标签。但是,如果您已将 &lt;Tab&gt; 映射到某个东西,而不是将某些东西映射到 &lt;Tab&gt;,则应该出现此消息,请检查 verbose map &lt;Tab&gt; 的输出。你确定 vim 可以区分 &lt;Tab&gt;&lt;S-Tab&gt; 吗?在大多数终端中它不能。
  • @Zyx :是的,很难区分 &lt;Tab&gt;&lt;S-Tab&gt; 。我正在尝试修复 Make Shift Tab Work 。好吧,我的问题是 ^I 是什么,因为我从我的 vimrc 中删除了命令 map &lt;Tab&gt; &gt;&gt;,所以错误停止显示。将某些东西映射到选项卡是问题所在,不是吗?

标签: vim code-snippets keymapping


【解决方案1】:

检测您的 vim 版本是否能够区分 Tab 和 Shift-Tab 的一种有用方法是:

进入插入模式,按 Ctrl-v* 然后按 Shift-Tab。当我这样做时,我得到&lt;S-Tab&gt;(Windows XP 上的 gvim 7.2)。

如果您不明白,那么我认为您不能使用当前设置将 Shift-Tab 与 Tab 分开映射。

*Ctrl-v 将采用你按下的下一个组合键并输出 vim 实际看到的组合键。

编辑:如果您使用的是 mswin.vim,那么您需要使用 Ctrl-q

【讨论】:

    猜你喜欢
    • 2013-08-23
    • 2011-02-14
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多