加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

有没有办法在Vim脚本中使用两个自定义的完整函数?

发布时间:2020-12-16 01:15:52 所属栏目:安全 来源:网络整理
导读:有没有办法实现以下目标? command! -nargs=* -complete=customlist,CustomFunc1 -complete=customlist,CustomFunc2 Foo call MyFunction(f-args) 当从vim cmd行调用函数Foo时,用户将能够tab-complete两个参数.自动完成将从两个不同的列表中拉出. 例如 :Foo
有没有办法实现以下目标?
command! -nargs=* -complete=customlist,CustomFunc1 -complete=customlist,CustomFunc2 Foo call MyFunction(<f-args>)

当从vim cmd行调用函数Foo时,用户将能够tab-complete两个参数.自动完成将从两个不同的列表中拉出.

例如

:Foo arg1 good<TAB> whi<TAB>

按< TAB>完成这些话.

:Foo arg1 goodyear white
有足够的信息通过它传递给完成功能
参数.知道命令行中的当前光标位置
完成后,可以确定参数的编号
目前正在编辑中.这是将该数字作为返回的函数
唯一的完成建议.
" Custom completion function for the command 'Foo'
function! FooComplete(arg,line,pos)
    let l = split(a:line[:a:pos-1],'%(%(%(^|[^]))@<!s)+',1)
    let n = len(l) - index(l,'Foo') - 1
    return [string(n)]
endfunction

通过调用其中一个函数替换最后一行
具体论证(如果已经写好).例如,

let funcs = ['FooCompleteFirst','FooCompleteSecond']
return call(funcs[n],[a:arg,a:line,a:pos])

请注意,有必要在之前忽略以空格分隔的单词
命令名称,因为它们可能是范围的限制或计数(空格是
如果命令中包含其中一个,则允许.)

用于将命令行拆分为参数的正则表达式帐户转义的空白是参数的一部分,而不是分隔符. (当然,完成函数应该逃避空格建议的候选人,像往常一样,如果命令有多个可能的论点.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读