Vim 使用文件类型插件的通用代码

Vim 使用文件类型插件的通用代码,vim,ftplugin,Vim,Ftplugin,我想在几个不同的Vim文件类型插件中运行一组常见的命令。例如,对于html、xml和xhtml,有几个设置是我想要共同使用的。将此通用代码放在哪里最合适?如何将其加载到各个插件文件中?一般共享代码 要重用(缓冲区本地)命令或映射,您可以在(全局)函数中定义它们,并从ftplugin调用它们: " Put this in your .vimrc, or make it an autoload function. function SetupCommands() command! -buff

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

一般共享代码 要重用(缓冲区本地)命令或映射,您可以在(全局)函数中定义它们,并从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
inoremap <buffer> <C-CR> <lt>br>
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>
文件类型继承 然而,您的问题是关于一种特殊形式的重用:XML、HTML和(X)HTML有很多共同点。没有权威的方法来组织它:HTML是XML的一种形式(但有效性不好),XHTML可能既是XML又是HTML

例如,我在
~/.vim/ftplugin/HTML\u abb.vim
中定义了HTML的缩写:

" in your ftplugin script:
runtime mysetup.vim
inoremap <buffer> <C-CR> <lt>br>
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>
使用
:runtime
方法,您甚至可以混合和匹配:为通用XML定义工具并为HTML继承它们(尽管它们可能会抱怨语法),但为HTML定义缩写并为XHTML继承它们,而不是XML。Vim提供了所有的灵活性,您可以自行决定适合您的结构。

一般来说,共享代码 要重用(缓冲区本地)命令或映射,您可以在(全局)函数中定义它们,并从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
inoremap <buffer> <C-CR> <lt>br>
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>
文件类型继承 然而,您的问题是关于一种特殊形式的重用:XML、HTML和(X)HTML有很多共同点。没有权威的方法来组织它:HTML是XML的一种形式(但有效性不好),XHTML可能既是XML又是HTML

例如,我在
~/.vim/ftplugin/HTML\u abb.vim
中定义了HTML的缩写:

" in your ftplugin script:
runtime mysetup.vim
inoremap <buffer> <C-CR> <lt>br>
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>
使用
:runtime
方法,您甚至可以混合和匹配:为通用XML定义工具并为HTML继承它们(尽管它们可能会抱怨语法),但为HTML定义缩写并为XHTML继承它们,而不是XML。Vim提供了所有的灵活性,您可以自行决定适合您的结构。

一般来说,共享代码 要重用(缓冲区本地)命令或映射,您可以在(全局)函数中定义它们,并从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
inoremap <buffer> <C-CR> <lt>br>
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>
文件类型继承 然而,您的问题是关于一种特殊形式的重用:XML、HTML和(X)HTML有很多共同点。没有权威的方法来组织它:HTML是XML的一种形式(但有效性不好),XHTML可能既是XML又是HTML

例如,我在
~/.vim/ftplugin/HTML\u abb.vim
中定义了HTML的缩写:

" in your ftplugin script:
runtime mysetup.vim
inoremap <buffer> <C-CR> <lt>br>
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>
使用
:runtime
方法,您甚至可以混合和匹配:为通用XML定义工具并为HTML继承它们(尽管它们可能会抱怨语法),但为HTML定义缩写并为XHTML继承它们,而不是XML。Vim提供了所有的灵活性,您可以自行决定适合您的结构。

一般来说,共享代码 要重用(缓冲区本地)命令或映射,您可以在(全局)函数中定义它们,并从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
inoremap <buffer> <C-CR> <lt>br>
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>
文件类型继承 然而,您的问题是关于一种特殊形式的重用:XML、HTML和(X)HTML有很多共同点。没有权威的方法来组织它:HTML是XML的一种形式(但有效性不好),XHTML可能既是XML又是HTML

例如,我在
~/.vim/ftplugin/HTML\u abb.vim
中定义了HTML的缩写:

" in your ftplugin script:
runtime mysetup.vim
inoremap <buffer> <C-CR> <lt>br>
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>

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

最简单的解决方案是将所有设置包装在
函数中,并使用
autocmd FiltType html、xml、xhtml call MySettings()
。但这应该放在
.vimrc
的末尾,以便覆盖先前配置的任何设置。。你所说的如何将其加载到各个插件文件中是什么意思?我只是说,如果我在一个文件中存储了一些常用代码,那么如何让它从另一个文件中执行这些代码。我想我只会使用
源代码
,但我想以一种独立于系统的方式来做,所以我不能使用绝对路径。最简单的解决方案是将所有设置包装在
函数中
并使用
autocmd Filtype html,xml,xhtml call MySettings()
。但这应该放在
.vimrc
的末尾,以便覆盖先前配置的任何设置。。你所说的如何将其加载到各个插件文件中是什么意思?我只是说,如果我在一个文件中存储了一些常用代码,那么如何让它从另一个文件中执行这些代码。我想我只会使用
源代码
,但我想以一种独立于系统的方式来做,所以我不能使用绝对路径。最简单的解决方案是将所有设置包装在
函数中
并使用
autocmd Filtype html,xml,xhtml call MySettings()
。但这应该放在
.vimrc
的末尾,以便覆盖先前配置的任何设置。。我是说,如果我在一个文件中存储了一些常用的代码,那么如何让它从另一个文件中执行这些代码呢