Snipmate 不再展开
Snipmate doesn't expand anymore
Snipmate 曾用于扩展片段,但已停止工作。我改了几个
我的 vimrc 中有不相关的东西,但我不知道是什么原因造成的(我也没有
旧文件的备份)。
我目前的调查:
按下标签不会展开而是插入白色space,检查:verbose imap
:
i <Tab> * =TriggerSnippet()<CR>
Last set from ~\vimfiles\bundle\snipmate.vim\after\plugin\snipMate.vim
好像也有道理,不知道手动输入<C-R>=TriggerSnippet()<CR>
会怎样?同样的结果,白色 space 被插入。奇怪.
- 我在
TriggerSnippet()
源代码中编辑了一些 :echo
语句,显然该功能根本没有执行?
- 在Python文件中输入
def
,将光标定位在f
或其旁边的space上,输入:call TriggerSnippet()
。这次函数实际上是运行s(debug回显可见),但是没有展开。但也许它真的想从插入模式调用,而不是从 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 树是干净的(除了少数调试语句,但没有它们也不能工作) .
编辑: 在 Conspicuous Compiler 关于 s:
变量的解释后更新。
编辑 2: 我使用 Pathogen 安装的插件:ctrlp-py-matcher
ctrlp.vim,
绝地-vim,
pytest-vim-编译器,
python-模式,
snipmate.vim,
合成的,
vim-easymotion,
vim-fugit我,
vim-懂事,
vim-侦探,
我安装了一个来自古老存储库的 snipmate 克隆。我仍然不知道为什么它起作用然后突然停止。
给其他人的专业提示:检查您从哪里获得 snipmate。它需要(在撰写本文时):
https://github.com/garbas/vim-snipmate
如果您正在使用 snipmate.vim,请删除它并安装正确的。请注意,新的 vim-snipmate 有一些您需要安装的依赖项(请参阅 github 存储库)。
如果您已经在更改内容,您也可以考虑直接切换到 ultisnips,这似乎是现代(2015 年)snipmate 的替代品。不过,它需要 vim 和 +python 支持。
Snipmate 曾用于扩展片段,但已停止工作。我改了几个 我的 vimrc 中有不相关的东西,但我不知道是什么原因造成的(我也没有 旧文件的备份)。
我目前的调查:
按下标签不会展开而是插入白色space,检查
:verbose imap
:i <Tab> * =TriggerSnippet()<CR> Last set from ~\vimfiles\bundle\snipmate.vim\after\plugin\snipMate.vim
好像也有道理,不知道手动输入
<C-R>=TriggerSnippet()<CR>
会怎样?同样的结果,白色 space 被插入。奇怪.- 我在
TriggerSnippet()
源代码中编辑了一些:echo
语句,显然该功能根本没有执行? - 在Python文件中输入
def
,将光标定位在f
或其旁边的space上,输入:call TriggerSnippet()
。这次函数实际上是运行s(debug回显可见),但是没有展开。但也许它真的想从插入模式调用,而不是从 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 树是干净的(除了少数调试语句,但没有它们也不能工作) .
编辑: 在 Conspicuous Compiler 关于 s:
变量的解释后更新。
编辑 2: 我使用 Pathogen 安装的插件:ctrlp-py-matcher ctrlp.vim, 绝地-vim, pytest-vim-编译器, python-模式, snipmate.vim, 合成的, vim-easymotion, vim-fugit我, vim-懂事, vim-侦探,
我安装了一个来自古老存储库的 snipmate 克隆。我仍然不知道为什么它起作用然后突然停止。
给其他人的专业提示:检查您从哪里获得 snipmate。它需要(在撰写本文时):
https://github.com/garbas/vim-snipmate
如果您正在使用 snipmate.vim,请删除它并安装正确的。请注意,新的 vim-snipmate 有一些您需要安装的依赖项(请参阅 github 存储库)。
如果您已经在更改内容,您也可以考虑直接切换到 ultisnips,这似乎是现代(2015 年)snipmate 的替代品。不过,它需要 vim 和 +python 支持。