2

Snipmate 曾经扩展片段,但它停止工作。我在 vimrc 中更改了一些不相关的东西,但我不知道是什么原因造成的(而且我没有旧文件的备份)。

到目前为止我的调查:

  • 按制表符不会展开,而是插入空格,检查:verbose imap

    i <Tab> * =TriggerSnippet()<CR>
             最后一组来自 ~\vimfiles\bundle\snipmate.vim\after\plugin\snipMate.vim

  • 看起来很合理,我想知道如果我<C-R>=TriggerSnippet()<CR>手动输入会发生什么?同样的结果,插入了空格。诡异的。

  • 我在源代码中编辑了几条:echo语句TriggerSnippet(),显然该函数根本没有执行?
  • 输入def一个 Python 文件,将光标放在f或 旁边的空格上,输入:call TriggerSnippet(). 这次函数实际运行(调试回显可见),但没有扩展。但也许它真的想从插入模式调用,而不是从 ex。
  • 运行我在这个问题中找到的以下代码给出了一个空结果:

    乐趣!GetSnipsInCurrentScope()
         让剪断 = {}
         对于 [bufnr('%')] + split(&ft, '.') + ['_'] 中的范围
             调用 extend(snips, get(s:snippets, scope, {}), 'keep')
             调用 extend(snips, get(s:multi_snips, scope, {}), 'keep')
         结束
         返回剪断
     结束
     回显键(GetSnipsInCurrentScope())
     ----> []

诡异的。为什么我可以TriggerSnippets通过 ex 命令而不是 via运行<C-R>=?没有定义片段是什么意思?更重要的是,我该如何解决?

至于我的配置,我的 vimrc 中没有提到 Snipmate,我在 Win7 上的 Vim 7.4 上通过病原体安装了它,它以前工作过。我正在使用 Snipmate 的最新 git 版本(昨天安装它并且它工作)并且 git 树是干净的(除了少数调试语句,但没有它们也不起作用)。

编辑:在显着编译器对s:变量的解释之后更新。

编辑 2:我使用 Pathogen 安装的插件:ctrlp-py-matcher ctrlp.vim、jedi-vim、pytest-vim-compiler、python-mode、snipmate.vim、syntastic、vim-easymotion、vim-fugitive、vim-sensible ,vim侦探,

4

1 回答 1

0

我从一个古老的存储库安装了一个 snipmate 克隆。我仍然不知道为什么它会起作用,然后突然停止。

给其他人的专业提示:检查你从哪里得到 snipmate。它需要(在撰写本文时):

https://github.com/garbas/vim-snipmate

如果您使用的是snipmate.vim,请摆脱它并安装正确的。请注意,新的 vim-snipmate 还需要安装一些依赖项(请参阅 github 存储库)。

如果您已经在改变,您也可以考虑直接切换到ultisnips,这似乎是 snipmate 的现代(2015 年)替代品。不过,它需要一个支持 +python 的 vim。

于 2015-05-14T04:45:52.160 回答