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

bej*_*bee 10 vim snipmate

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

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

现在我可以用了

  • 股票js片段
  • mootools片段

我想补充一个第三组片段的,javascript.myCustomSnippets即会加载文件类型javascript.

当我尝试使用类似的东西添加我的自定义 autocmd FileType javascript set ft=javascript.myCustomSnippets 代码段时,它会覆盖/禁用mootools代码段,但默认的javascript代码段仍然有效.

我如何实现这一目标,还是可能的?

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

我的解决方案

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

~/.vim/bundles/
    snipmate.vim/snippets/javascript.snippet
    vim-snippets.mootools/snippets/mootools.snippet
    vim-snippets.myCustomSnippets/snippets/javascript.snippets
Run Code Online (Sandbox Code Playgroud)

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

And*_*dev 17

Ruy Diaz对于个人的东西是正确的,你可以将所有自己的片段保存在"〜/ .vim/snippets"中,你就不会遇到github repo的任何问题.如果这对您不起作用,则该g:snippets_dir变量可能具有错误的值 - 只需在您的vimfiles中明确设置它.

至于组合几个片段,您可以使用该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')
Run Code Online (Sandbox Code Playgroud)

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

  • 对于后来的人来说:如果你使用最新版本的snipmate(来自[garbas](https://github.com/garbas/vim-snipmate))和Pathogen,你可以拥有多个具有相同文件名的片段,所有人都会被阅读.它甚至会提示您选择是否有多种类型.不需要做任何其他事:) (2认同)