Gregsen
Gregsen

Reputation: 471

vim-go autocompletion not working

I recently installed vim-go using pathogen, but the autocompletion feature is not working. If I am using it only shows commands I've already used. My .vimrc has

filetype plugin on

" Enable autocompletion
set omnifunc=syntaxcomplete#Complete
" Select keyword as you type
:set completeopt=longest,menuone

Do I need more than just this plugin? The other feature I have tested so far are working (:GoRun, syntax highlighting). This is on a Ubuntu machine.

Upvotes: 10

Views: 17248

Answers (5)

ezio
ezio

Reputation: 548

For those who were using Coc but getting some of autocomplete:

open coc configs using :CocConfig and paste the following:

    "languageserver": {
        "golang": {
            "command": "gopls",
            "rootPatterns": ["go.mod", ".vim/", ".git/", ".hg/"],
            "filetypes": ["go"]
        }
    }

Upvotes: 0

yantaq
yantaq

Reputation: 4038

This is what worked for me. default gocode pkg seems to be no longer maitained. so update it with the one below. my go and vim versions:

VIM - Vi IMproved 8.2
go version go1.16.4 

follow the steps below:

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

run gocode in debug mode

gocode -s -debug

try the autocomplete.(vim-go C+X C+O)

viola! you should see the list like so:

enter image description here

Upvotes: 0

If none of these suggestions solves your problem, try killing gocode from a terminal:

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

In case of startup failure due to a lingering unix socket, simply remove it and try again. Once everything is working, you can terminate the debug enabled gocode process (the plugin will autostart as needed)

Upvotes: 0

Breno Leitão
Breno Leitão

Reputation: 3677

Are you typing C-X C-O to open the autocompletation window? This works fine for me.

On the other hand, if you want to get real-time completion (completion by type) install the following plugins YCM or neocomplete

Upvotes: 9

Ingo Karkat
Ingo Karkat

Reputation: 172520

The syntaxcomplete#Complete ships with Vim, not the Go filetype plugin, and it has very limited capabilities (basically, just offering the language's keywords). No wonder you're disappointed.

The ftplugin/go.vim file sets the correct, custom completion of the vim-go plugin:

setlocal omnifunc=go#complete#Complete

So, just ensure that the 'filetype' setting is correct (go), and that you don't have any additional configuration that overrides the plugin's.

:verbose setlocal omnifunc?

can tell you.

Upvotes: 7

Related Questions