允许vim snipMate代码片段在不同文件类型中工作

4

我对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个回答

2

你已经接近成功了。第一行应该足以满足你的需求,但JavaScript文件的文件类型不是js,而是javascript

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

它还可以为您提供JavaScript的全自动完成功能。

1
哦,我差点忘了! SPF13 是一个庞大而且不必要的垃圾:尽快放弃它。 - romainl
另外,它是g:snipMate.scope_aliases而不是scope_alias - Flov

2

之前我使用过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和javascript-jquery定义了javascript文件类型以进行作用域别名,因此在上面的haml文件类型中,定义javascript的作用域别名也会得到其所有定义的javascript作用域别名。您不必重复自己。
我不确定.vimrc.local或其他文件,我只是把它放在我的.vimrc中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接