vim go自动完成不工作

vim go自动完成不工作,vim,autocomplete,go,Vim,Autocomplete,Go,我最近安装了使用病原体,但自动完成功能不起作用。如果我正在使用,它只显示我已经使用过的命令。 我的,vimrc filetype plugin on " Enable autocompletion set omnifunc=syntaxcomplete#Complete " Select keyword as you type :set completeopt=longest,menuone 我需要的不仅仅是这个插件吗?到目前为止,我测试的另一个特性正在工作(:GoRun,语法突出显示)。

我最近安装了使用病原体,但自动完成功能不起作用。如果我正在使用,它只显示我已经使用过的命令。 我的,vimrc

filetype plugin on

" Enable autocompletion
set omnifunc=syntaxcomplete#Complete
" Select keyword as you type
:set completeopt=longest,menuone
我需要的不仅仅是这个插件吗?到目前为止,我测试的另一个特性正在工作(:GoRun,语法突出显示)。 这是在Ubuntu机器上。

syntaxcomplete#Complete是Vim附带的,不是Go文件类型插件,它的功能非常有限(基本上,只提供语言的关键字)。难怪你会失望

ftplugin/go.vim
文件设置vim go插件的正确自定义完成:

setlocal omnifunc=go#complete#Complete
因此,只需确保
'filetype'
设置正确(
go
),并且您没有覆盖插件的任何其他配置

:verbose setlocal omnifunc?

我可以告诉您。

您是否键入C-X C-O打开自动完成窗口?这对我来说很好


另一方面,如果您想获得实时完成(按类型完成),请安装以下插件
YCM
neocomlete

,如果这些建议都不能解决您的问题,请尝试从终端删除gocode:

gocode exit (or killall gocode it that fails)
gocode -s -debug

如果由于unix套接字延迟而导致启动失败,只需将其删除,然后重试。一旦一切正常,您就可以终止启用调试的gocode进程(插件将根据需要自动启动)

这对我来说是有效的。默认的GoCodePKG似乎不再被维护。所以用下面的更新它。 我的go和vim版本:

VIM - Vi IMproved 8.2
go version go1.16.4 

按照以下步骤操作:

gocode exit 
go get -u github.com/mdempsky/gocode

在调试模式下运行gocode

gocode -s -debug
尝试自动完成。(vim go C+X C+O)

中提琴!您应该看到如下列表:


:verbose setlocal omnifunc?
输出omnifunc=go#complete#完成~/.dotfiles/.vim/bundle/vim go/ftplugin/go.vim中的最后一组,这符合您的建议。但是,这对我不起作用。C-x,C-o有效
neocomplete
似乎适用于其他语言,比如bash脚本:它只需键入
#即可立即显示整个路径/bin/
。禁用
neocomplete
禁用了该类型的功能,因此我知道该插件正在工作。任何帮助都将不胜感激。您好,您已经接受了答案,尽管尚未发布解决方案。如果你成功修复了它,你能分享一下如何修复吗?因为我和你面临同样的问题。谢谢这让我大开眼界。我不知道这是一个内置的东西。我期望有一个实时弹出窗口。事实上,在阅读文档()之后,可以使用neocomplete(vim)或deoplete(仅限vim8/neovim)