10

使用 snipmate + vim 时,是否可以为给定的语言/文件类型加载许多片段文件?

例如:snipmate 附带javascript.snippets 我还加载了 mootools 片段并将其添加到我的 vimrc 中: autocmd FileType javascript set ft=javascript.mootools

现在我可以使用

  • 股票js片段
  • mootools 片段

我想添加第三组片段,javascript.myCustomSnippets将为filetype 加载。javascript

当我尝试使用类似这样的东西添加我的自定义片段 autocmd FileType javascript set ft=javascript.myCustomSnippets 时,它会覆盖/禁用 mootools 片段,但是默认的 javascript 片段继续工作。

我该如何做到这一点,或者有可能吗?

ps:我知道我可以将我的片段添加到默认的 javascript 片段文件中,但是由于我的文件夹中同步了 snipmate github repo .vim/bundle/,所以我想将个人资料与实时 repo 分开。

我的解决方案

最终让我的文件并行工作的具体解决方案是像这样构造我的文件(顺便说一下,我正在使用病原体来自动加载bundle目录)

~/.vim/bundles/
    snipmate.vim/snippets/javascript.snippet
    vim-snippets.mootools/snippets/mootools.snippet
    vim-snippets.myCustomSnippets/snippets/javascript.snippets

通过将我的文件命名为“javascript.snippets”,它会与默认值一起自动加载。

4

5 回答 5

17

Ruy Diaz 对个人资料的看法是正确的,您可以将所有自己的片段保存在 "~/.vim/snippets" 中,并且 github 存储库不会有任何问题。如果这对您不起作用,则该g:snippets_dir变量可能具有错误的值 - 只需在您的 vimfile 中明确设置它即可。

至于组合几个片段,您可以使用该ExtractSnipsFile功能。这应该可以满足您的要求,而不会弄乱点文件类型语法。

假设您有以下三个片段文件,都在您的片段目录中:

  • javascript.snippets
  • mootools.snippets
  • myCustomSnippets.snippets

创建一个文件“after/plugin/snippets.vim”并将以下内容放入其中:

call ExtractSnipsFile(g:snippets_dir.'javascript.snippets', 'javascript')
call ExtractSnipsFile(g:snippets_dir.'mootools.snippets', 'javascript')
call ExtractSnipsFile(g:snippets_dir.'myCustomSnippets.snippets', 'javascript')

这会将所有这些片段与文件类型相关联javascript,不需要显式的自动命令。有关更多信息,您可以尝试:help ExtractSnipsFile.

于 2011-08-02T19:00:06.593 回答
4

在您的 .vim 目录中创建一个片段文件夹并将您的片段放在那里。在其中创建一个名为 javascript.snippets 的文件,您应该同时拥有 snipmate 片段和您的自定义片段。

于 2011-08-02T18:13:25.870 回答
2

仅供参考, :h snipMate 声明: extends:扩展给定文件类型的片段。

extends c, cpp, objc

这将包括给定文件类型的所有片段。只需将您自己的片段文件放入 ~/.vim/snippets/objc.snippet

于 2014-06-17T18:01:22.410 回答
1

是的当然。首先使用 github.com/MarcWeber/vim-addon-manager 这样您就不会错过上游的更改。M. Sander 的 snipmate 已被分叉,因为他从未回复有关合并请求的电子邮件。这就是我和 garbas 改进它的原因。新版本可以在 github.com/garbas/vim-snipmate 找到。

您有一个全局范围别名字典,可用于将文件类型与片段文件相关联。通过这种方式,您可以根据个人喜好轻松地将 js 片段支持添加到 html 文件中。还有一些变化,但我厌倦了重复它们。

于 2012-01-07T22:56:43.157 回答
0

由于您使用的是病原体,因此您只需将自定义 Snippets 文件夹添加到 bundles 目录即可。例如:

~/.vim/bundles/mySnippets/snippets/php.snippets

于 2012-02-06T19:54:25.467 回答