【问题标题】:neocomplete autocompletion not working correctly with syntax filesneocomplete 自动完成功能无法与语法文件一起正常工作
【发布时间】:2016-10-23 21:18:58
【问题描述】:

这部分在我的 .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 指令 [无空格] 中),尽管安装了 angularjs 的语法文件(通过 javascript-libraries-syntax.vim 插件),但没有弹出任何内容

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

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

【问题讨论】:

    标签: angularjs vim vim-syntax-highlighting omnicomplete neocomplete


    【解决方案1】:
    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']
      \ }
    

    第一种或第二种方法都可以解决问题。

    【讨论】:

    • 我意外地过早地按下了“添加评论”,并且似乎在此处找不到编辑按钮。第一种方法(neocomplete 语法插件)对我没有任何帮助。我删除了它,然后尝试了完成这项工作的第二种方法(全能函数字典)。但是,我仍然有一个半相关的问题。我的“vim-javascript”插件似乎与某些东西发生冲突(我敢打赌库插件)并弄乱了我的语法文件。 'ng-repeat'(即)的语法突出显示不起作用,尽管自动完成功能可以。删除 'vim-javascript' 解决了这个问题,但我不想放弃那个插件。
    • @user2263786,我不知道。请为此问题考虑一个新问题。也许外面的其他人也经历过同样的碰撞。
    猜你喜欢
    • 2020-10-12
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多