使用filetype插件的通用代码

时间:2014-05-06 14:15:18

标签: vim ftplugin

我有一组常见的命令,我想在几个不同的Vim文件类型插件中运行。例如,对于htmlxmlxhtml,我想要共同使用几种设置。放置此公共代码的最佳位置在哪里?如何将其加载到各个插件文件中?

1 个答案:

答案 0 :(得分:3)

一般的共享代码

为了重用(缓冲区本地)命令或映射,您可以在(全局)函数中定义它们,并从ftplugin中调用它:

" Put this in your .vimrc, or make it an autoload function.
function SetupCommands()
    command! -buffer ...
endfunction

" in your ftplugin script:
call SetupCommands()

或者,只需将它们放入您:source按需的单独脚本中,例如: ~/.vim/mysetup.vim

" in your ftplugin script:
runtime mysetup.vim

文件类型继承

然而,您的问题是关于一种特殊的重用形式:XML,HTML和(X)HTML有很多共同之处。没有权威的方式来构建它:HTML是XML的一种形式(但有效性有限),XHTML可能都是 - 一个XML而且是一个HTML。

例如,我在~/.vim/ftplugin/html_abb.vim中定义了HTML缩写:

inoremap <buffer> <C-CR> <lt>br>

并在~/.vim/ftplugin/xhtml_abb.vim

中继承(并覆盖)此内容
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>

使用:runtime方法,您甚至可以混合搭配:为通用XML定义工具并为HTML继承它们(即使他们可能会抱怨语法),但要定义HTML的缩写并继承它们XHTML,但不是XML。 Vim提供了所有的灵活性,你可以决定一个适合你的结构。