允许vim snipMate片段处理不同的文件类型

时间:2014-04-04 03:00:03

标签: vim snipmate spf13vim

我对vim相当新,并且一直在玩spf13配置,这很棒。我无法弄清楚的一件事是如何允许一种类型的文件的片段在另一种文件上使用。在我个人的情况下,我希望在html文件中使用javascript和javascript-jquery片段。这是我试过的:

au BufRead,BufNewFile *.html set ft=html.js

call ExtractSnipsFile(g:neosnippet#snippets_directory.'javacript-jquery.snippets','html')

let g:snipMate = {}
let g:snipMate.scope_alias = {}
let g:snipMate.scope_alias['html'] = 'html,javascript,javascript-jquery'

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['html'] = 'html,javascript,javascript-jquery'

我已尝试将这些行放在.vimrc.before.local和.vimrc.local文件中。

这些似乎都不允许javascript片段在html文件中工作。我终于放弃并将所有javascript和javascript-jquery片段应用到html片段文件中。 这样就可以了,但我很想知道是否有另一种方式。

2 个答案:

答案 0 :(得分:2)

你快到了。第一行应该足以获得您想要的内容,但JavaScript文件的文件类型不是js,而是javascript

autocmd BufRead,BufNewFile *.html set ft=html.javascript

它也为你提供了js omnicompletion。

答案 1 :(得分:1)

我过去常常使用snipmate,这是我的配置:

let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases.haml = 'javascript'
let g:snipMate.scope_aliases.jade = 'javascript'
let g:snipMate.scope_aliases.markdown = 'html'
let g:snipMate.scope_aliases.javascript = 'javascript.d3,javascript-jquery'

您不需要为设置复合文件类型而烦恼,也不必自己指定您为其定义范围别名的文件类型。这非常精细和递归。由于我们还为javascript.dr&amp ;;定义了javascript文件类型到scope_alias。上面的javascript-jquery,haml文件类型,为javascript定义了scope_alias,也为它定义了javascript的所有scope_aliases。你不必重复自己。

我不确定.vimrc.local或其他文件,我只是把它放在我的.vimrc中