Vim 使用备用的.clang_完整文件

Vim 使用备用的.clang_完整文件,vim,clang-complete,Vim,Clang Complete,默认情况下,clang_complete插件从vim的path变量中的文件读取编译器标志。这并不一定是可取的,因为path用于其他目的,这意味着可能需要修改变量、跟踪.clangu_complete文件的位置等。如果有一个选项,例如,只指定要包含的文件,则会简单得多 没有,但有一个: 为传递给clang的用户选项设置源。现有资料来源包括: [...] {anything}其他选项将作为自定义选项源处理,如下所示 方式:clang_complete将尝试加载名为 getopts{anyth

默认情况下,clang_complete插件从vim的path变量中的文件读取编译器标志。这并不一定是可取的,因为path用于其他目的,这意味着可能需要修改变量、跟踪.clangu_complete文件的位置等。如果有一个选项,例如,只指定要包含的文件,则会简单得多

没有,但有一个:

为传递给clang的用户选项设置源。现有资料来源包括:

   [...]
{anything}其他选项将作为自定义选项源处理,如下所示 方式:clang_complete将尝试加载名为 getopts{anything}getopts,然后可以修改 b:clang_用户选项变量。如果您不知道,请参阅有关自动加载的帮助 这是什么

所以我指定:

let g:clang_auto_user_options = "clangcompl"
并创建了一个文件autoload/getopts/clangcompl.vim,其中包含一个函数:

function clangcompl#getopts ()
此函数已加载,但clang_complete未使用它,因此出现错误:

Error detected while processing function <SNR>14_ClangCompleteInit..LoadUserOptions:
line   20:
E117: Unknown function: getopts#clangcompl#getopts

这是我第一次尝试vimscript,所以任何提示都非常感谢。我哪里出错了?

您需要在声明中包括相对路径,而不仅仅是文件和函数名:

function getopts#clangcompl#getopts ()
        let files = expand("~/.vim/clang_opts/*", 0, 1)
        for f in files
                let opts = readfile(f)
                for o in opts
                        let b:clang_user_options .= " ".o
                endfor
        endfor
endfunction
这将使用~/.vim/clang_opts中的任何内容作为.clang_完整文件

function getopts#clangcompl#getopts ()
        let files = expand("~/.vim/clang_opts/*", 0, 1)
        for f in files
                let opts = readfile(f)
                for o in opts
                        let b:clang_user_options .= " ".o
                endfor
        endfor
endfunction