vim-go:无法自动补全

I'm trying to use vim-go, but I can't get autocompletion to work.

My go environment works well, I succesfully ran :GoInstallBinaries, and I can use any :GoXXX command without errors. But I can't get autocompletion to work.

  • When I hit <Ctrl-o> after a dot, vim just switches in the status bar between -- INSERTION -- and -- (insertion) -- modes (what's the difference btw ?) and moves my cursor one character to the left.
  • When I hit <Ctrl-x>, It just shows -- mode ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) in the status bar.

Sometimes (rarely) after spamming <Ctrl-o> it shows the vim-go autocompletion tooltip ...

vim-go is the only plugin installed, using pathogen.

Omni completion (which the Go plugin offers) is triggered via <C-x><C-o>, that is Ctrl + X followed by Ctrl-O. The prompt (-- mode ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)) you've described hints at that.

If that is too cumbersome for you, you can define an insert mode mapping to shorten that; here's a (global) example to be put into your ~/.vimrc:

:inoremap <C-b> <C-x><C-o>

If you use GVIM, you can also use the IDE-like <C-Space> instead of the example <C-g> trigger.