Snipmate用于扩展片段,但它停止了工作。我换了几个 我的vimrc中没有相关的东西,但我不知道是什么导致了它(我没有 备份旧文件。)
到目前为止我的调查:
按下标签不会展开而是插入空格,请检查:verbose imap
:
i <Tab> * =TriggerSnippet()<CR> Last set from ~\vimfiles\bundle\snipmate.vim\after\plugin\snipMate.vim
似乎合理,我想知道如果手动输入<C-R>=TriggerSnippet()<CR>
会发生什么?同样的结果,插入了空格。怪异。
:echo
语句中编辑了TriggerSnippet()
源代码,显然函数根本没有执行过?def
,将光标放在f
或其旁边的空格上,输入:call TriggerSnippet()
。这次函数实际运行(调试回声可见),但没有扩展。但也许它真的想从插入模式调用,而不是从ex。运行我在this question中找到的以下代码,结果为空:
fun! GetSnipsInCurrentScope() let snips = {} for scope in [bufnr('%')] + split(&ft, '.') + ['_'] call extend(snips, get(s:snippets, scope, {}), 'keep') call extend(snips, get(s:multi_snips, scope, {}), 'keep') endfor return snips endf echo keys(GetSnipsInCurrentScope()) ----> []
怪异。为什么我可以通过ex命令而不是TriggerSnippets
运行<C-R>=
?什么意思没有定义片段?更重要的是,我该如何解决?
至于我的配置,我的vimrc中没有提到Snipmate,我在Win7上的Vim 7.4上通过病原体安装它,它以前工作过。我使用了Snipmate的最新git版本(昨天安装它并且工作正常),并且git树很干净(除了少数调试语句,但它没有它们也没有用。)
编辑在显眼编译器对s:
变量的解释后更新。
编辑2:我使用病原体安装的插件:ctrlp-py-matcher ctrlp.vim, 绝地,VIM, pytest-VIM编译器, 蟒蛇模式, snipmate.vim, syntastic, VIM-的EasyMotion, VIM-逃犯, VIM懂事, VIM-猎犬,
答案 0 :(得分:0)
我从一个安装的古代存储库中获得了一个snipmate克隆。我仍然不知道为什么它起作用然后突然停止了。
其他人的专业提示:检查你从哪里获取嫌犯。它需要(在撰写本文时):
https://github.com/garbas/vim-snipmate
如果你正在使用 snipmate.vim ,请删除它并安装正确的。请注意,新的vim-snipmate还有一些您需要安装的依赖项(请参阅github repo)。
如果您已经在处理事情,您可能还会考虑直接切换到 ultisnips ,这似乎是现代(2015)替代snipmate。但它需要一个带+ python支持的vim。