我们可以在vim中为给定的文件类型使用多个片段文件吗?

时间:2011-08-02 17:45:56

标签: vim snipmate

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

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

现在我可以使用

  • the stock js snippets
  • mootools片段

我想添加第3组代码段javascript.myCustomSnippets 加载文件类型javascript

当我尝试使用类似的内容添加自定义代码段时 autocmd FileType javascript set ft=javascript.myCustomSnippets  它会覆盖/禁用mootools片段,但默认的javascript片段会继续有效。

我如何做到这一点,还是可能?

ps:我知道我可以将我的片段添加到默认的javascript片段文件中,但由于我在我的.vim/bundle/文件夹中同步了snipmate github repo,我想将个人资料与现场回购。

我的解决方案

最终让我的文件并排工作的特定解决方案是构建我的文件(顺便说一下,我使用pathogen自动加载bundle目录)

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

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

5 个答案:

答案 0 :(得分:17)

Ruy Diaz关于个人的事情是正确的,你可以将你自己的所有片段保存在“〜/ .vim / snippets”中,你就不会对github repo有任何问题。如果这不适合您,g:snippets_dir变量可能具有错误的值 - 只需在您的vimfiles中明确设置它。

至于组合多个片段,您可以使用ExtractSnipsFile功能。这应该做你想要的,而不用乱码文件类型语法。

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

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

在/ 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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

仅供进一步参考,:h snipMate说明:extends: 扩展了给定文件类型的片段。

extends c, cpp, objc

这将包括给定文件类型的所有片段。 并将您自己的代码段文件放在〜/ .vim / snippets / objc.snippet

答案 3 :(得分:1)

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

您可以使用全局scope_aliases字典将文件类型与代码段文件相关联。这样,您可以根据个人喜好轻松地为html文件添加js代码段支持。还有一些变化,但我厌倦了重复它们。

答案 4 :(得分:0)

由于您使用的是病原体而不是您需要做的就是将自定义Snippets文件夹添加到bundles目录中。例如:

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