vim自定义弹出菜单

vim自定义弹出菜单

如何创建自定义完成弹出菜单。

我希望能够开始键入字符串的一部分,然后按自定义组合键以弹出仅特定字符串组的弹出完成。

我已经完成了 omni 设置并且不想添加到该列表。

例如,我有一个列表:
spo
spe
spa

我希望能够输入 sp 然后按 ctrl+> 并出现一个针对该特定列表的完成框。

答案1

  inoremap <F5> <C-R>=ListMonths()<CR>

    func! ListMonths()
      call complete(col('.'), ['January', 'February', 'March',
            \ 'April', 'May', 'June', 'July', 'August', 'September',
            \ 'October', 'November', 'December'])
      return ''
    endfunc

找到了!他们试图告诉我们的是隐藏在《魔法书》中的文档 =)

======================= 我的最终脚本是这样的

inoremap <F5> <C-R>=CustomComplete()<CR>

        func! CustomComplete()
                echom 'move to start of last word'
                normal b
                echom 'select word under cursor'
                let b:word = expand('<cword>')
                echom '->'.b:word.'<-'
                echom 'save position'
                let b:position = col('.')
                echom '->'.b:position.'<-'
                normal e
                normal l
                echom 'move to end of word'     

                let b:list = ["spoogle","spangle","frizzle"]
                let b:matches = []


                echom 'begin checking for completion'
                for item in b:list
                echom 'checking '
                echom '->'.item.'<-'      
                        if(match(item,'^'.b:word)==0)
                        echom 'adding to matches'
                        echom '->'.item.'<-'      
                        call add(b:matches,item)
                        endif
                endfor
                call complete(b:position, b:matches)
                return ''
        endfunc

答案2

创建单词列表:$HOME/wordlist并将字典添加到 vim。

:set dictionary+=$HOME/wordlist

激活单词列表:

:set complete-=k complete+=k

<CTRL>-P现在您可以使用和自动完成单词<CTRL-N

编辑:要获得单独的单词列表,您可以创建多个列表,例如

$HOME/firstlist
$HOME/secondlist

并分配键绑定来选择特定的工作列表:

noremap <F5> :set dictionary=$HOME/firstlist<CR>:set complete-=k complete+=k<CR>
noremap <F6> :set dictionary=$HOME/secondlist<CR>:set complete-=k complete+=k<CR>

这样做的优点是,一旦您选择了所需的列表,您就可以按照习惯使用<CTRL>-P和快捷方式。<CTRL>-N

相关内容