Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从vimscript完成触发器文件_Vim - Fatal编程技术网

从vimscript完成触发器文件

从vimscript完成触发器文件,vim,Vim,也许我的问题的答案是显而易见的,但即使经过一段时间的搜索,我也找不到任何有用的东西 我目前正在编写一个小型vim latex自动完成插件,它根据编辑上下文建议完成。代码的相关部分如下所示: function! Complete_latex(findstart, base) if a:findstart " locate the start of the base ".... else if s:envname_required()

也许我的问题的答案是显而易见的,但即使经过一段时间的搜索,我也找不到任何有用的东西

我目前正在编写一个小型vim latex自动完成插件,它根据编辑上下文建议完成。代码的相关部分如下所示:

function! Complete_latex(findstart, base)
    if a:findstart
        " locate the start of the base
        "....
    else
        if s:envname_required()
            return s:env_complete(a:base)
        endif

        if s:citation_required()
            return s:cite_complete(a:base)
        endif

        if s:filename_required()
            " TODO: Trigger filename completion
        endif
    endif
endfunction

set omnifunc=Complete_latex
*\u required()
函数基本上在我正在编辑的当前行抛出一堆regexp,以了解我现在正在做什么。因此,如果我在插入模式下的位置像…\input{|…,我希望我的omnifunc调用我在插入模式下可以用
C-xc-F
触发的相同完成

由于我还使用YouCompleteMe插件,并将
{
设置为*.tex文件中语义完成的触发器,因此触发正在处理中

我知道我自己可以得到一个文件列表并填充弹出菜单,但是我想知道我是否可以使用vim的内置功能


谢谢。

我不确定这是不是最好的办法,但我想到了

let l:glob_pattern = a:base . '*' 

let l:files_pre = globpath('.', l:glob_pattern, 0, 1)
let l:files_post = []

for l:file in l:files_pre
     call add(l:files_post, substitute(l:file, '^\./', '', ''))
endfor

return l:files_post
它基本上获取当前目录中与“base*”匹配的所有文件,并返回它们的列表。后处理部分只是删除由
globpath