0

这部分在我的 .vimrc 中:

" Enable omni completion
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

编辑 .html 文件时,我点击<并按预期弹出 neocomplete CompleteTags 建议列表。

之后,当输入时< div ng-(如在 angularjs 指令 [no space] 中),尽管安装了 angularjs 的语法文件(通过 javascript-libraries-syntax.vim 插件),但没有弹出任何内容

但是,当执行该行 set ofu=syntaxcomplete#Complete或类似地set omnifunc=syntaxcomplete#Complete一切正常时,我会看到指令列表。

  1. Neocomplete 不应该使用开箱即用的语法关键字吗?
  2. 我可以使用多个omnifuncs 来解决这个问题吗?#CompleteTags 和#Complete?
4

1 回答 1

0
  1. Neocomplete 不应该使用开箱即用的语法关键字吗?

它确实(来自 neocomplete 文档,neocomplete-syntax部分):

 If you want to complete the candidates from syntax files, you need to
 install the neco-syntax plugin (https://github.com/Shougo/neco-syntax).
  1. 我可以使用多个omnifuncs 来解决这个问题吗?#CompleteTags 和#Complete?

当然你可以(再次来自 neocomplete 文档,g:neocomplete#sources#omni#functions部分):

g:neocomplete#sources#omni#functions
        This dictionary which appoints omni source call functions.
        The key is 'filetype'.  The value is omnifunc name String or
        List of omnifunc name String.
        If |g:neocomplete#sources#omni#functions| [&filetype] is
        undefined, omni source calls 'omnifunc'.
        If the key is "_", used for all filetypes.

        Default value is {}.

因此,将以下字典添加到您的.vimrc:

let g:neocomplete#sources#omni#functions = {
  \ 'html': ['htmlcomplete#CompleteTags', 'syntaxcomplete#Complete']
  \ }

第一种或第二种方法都应该解决这个问题。

于 2016-10-23T13:18:58.297 回答