【问题标题】:Resolving a vim plugin mapping conflict - mapping already exists for \t解决 vim 插件映射冲突 - \t 的映射已存在
【发布时间】:2013-08-23 04:06:33
【问题描述】:
我跟着http://sontek.net/blog/detail/turning-vim-into-a-modern-python-ide#intro在gvim(安装在Windows 8机器上)安装了一堆用于Python编程的插件。 'command-t' 和 'tasklist' 插件之间似乎存在映射冲突,因为我收到以下错误消息:
>Error detected while processing C:\Users\Willem\vimfiles\bundle\tasklist\pl
>ugin\tasklist.vim:
>
>line 369:
>
>E227: mapping already exists for \t
然后我在 vim 中输入 :map 并看到一个映射是:
>n \t * :CommandT<CR>
有什么好办法解决这个问题吗?
【问题讨论】:
标签:
python
vim
plugins
conflict
【解决方案1】:
如果找到到<Plug>TaskList 的映射,任务列表将不会映射到<leader>t。
所以你只需要在你的 vimrc 中创建一个到<Plug>TaskList 的映射。我在源代码中找到的示例是
nnoremap <leader>v <Plug>TaskList
【解决方案2】:
另一个可能不完美的解决方案是直接编辑tasklist.vimaround 369 行并手动更改在那里完成的映射。
【解决方案3】:
这里有一个更一般的解释:
来自 vim 帮助:
<SID> 和 <Plug> 都用于避免键入键的映射
干扰只能从其他映射中使用的映射。
注意使用<SID>和<Plug>的区别:
<Plug> 在脚本之外可见。它用于映射
用户可能希望将键序列映射到的位置。 <Plug> 是一个
键入的密钥永远不会产生的特殊代码。让它非常
其他插件不太可能使用相同的字符序列,请使用
这个结构: scriptname mapname 在我们的例子中
脚本名称是“Typecorr”,地图名称是“添加”。这导致
“TypecorrAdd”。只有 scriptname 的第一个字符和
mapname 是大写的,这样我们就可以看到 mapname 是从哪里开始的。
因此,如果您希望不出现错误,则需要将某些内容映射到示例中的 <Plug>Tasklist。
像这样:
nnoremap <leader>v <Plug>TaskList