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