为Go编程语言设置vim自动完成

Pin*_*hio 8 vim bash autocomplete go

编辑:

我一般都很想知道人们如何为vim设置自动完成功能并且正在寻找建议.

与我原来的问题相关,我想我知道我可以去:

https://github.com/nsf/gocode

复制他们在那里提供的文件,然后开始使用vim自动完成.但是,我想知道人们的想法以及go社区如何设置vim自动完成功能.

另外,我已经按照那里发布的说明进行了操作,但仍然无法使用vim进行自动完成工作.所以我正在寻找有关如何使其发挥作用的其他替代方案或想法.不确定是什么问题.目前,当我尝试自动完成时,只需写入PANIC一词,而不是向我显示自动完成的选项.

原版的:

我试图设置我的vim,以便它可以自动完成Go编程语言,但是,我按照以下页面中的说明操作:

https://github.com/nsf/gocode

而且我不确定他们的意思是什么,我有点害怕改变我的vim设置可能会因为做错而损坏.

让我困惑的第一件事是它说:

Install official Go vim scripts from $GOROOT/misc/vim. If you did that already, proceed to the step 2.
Run Code Online (Sandbox Code Playgroud)

但是,我不确定那是什么意思.我确实去了我的终端中的那个目录并阅读了readme.txt文件,我说它如何激活我已经拥有的语法高亮.那是我为这一步做的一切吗?

在第2步,它说:

做:

vim/update.sh
Run Code Online (Sandbox Code Playgroud)

它们实际上提供了update.sh的代码,但我不确定cp命令的开头是什么意思,即:

#!/bin/sh
mkdir -p "$HOME/.vim/autoload"
mkdir -p "$HOME/.vim/ftplugin/go"
cp "${0%/*}/autoload/gocomplete.vim" "$HOME/.vim/autoload"
cp "${0%/*}/ftplugin/go/gocomplete.vim" "$HOME/.vim/ftplugin/go"
Run Code Online (Sandbox Code Playgroud)

但是$ {0%/*}部分做了什么?即使我知道update.sh是什么,我在哪里运行它,因为这个vim/update.sh是在相对路径上完成的?

我知道update.sh要我将一些文件复制到$ HOME/.vim/ftplugin/go和$ HOME/.vim/autoload,但我甚至从〜找不到这样的文件,所以我不确定如何复制.我知道应该去哪里,但不知道文件的位置.有人知道这些文件的位置,或者更简单或更详细的说明如何使vim自动完成go?

我在这里先向您的帮助表示感谢!:)


我发现的一些问题,我不知道是否有预期,但在$ GOROOt/misc/vim/ftplugin/go中我根本没有gocomplete.vim文件.我有其他东西似乎无关紧要,如fmt.vim import.vim和test.sh文件.

但奇怪的是,在$ GOROOt/misc/autoload我没有gocomplete.vim文件,但我有一个complete.vim文件.不确定是否相同或为什么文件名会改变.无论如何,他们的自动完成设置和心灵分享他们有什么,如果他们知道我遇到的差异可能是什么?谢谢!


问题的补充

我一般也对其他人如何为他们的vim进行自动完成设置感兴趣.随意分享一下!

Ing*_*kat 3

update.sh已经执行过命令了吗?我非常有信心它会起作用。

所有 Vim 配置都存储在~/.vim/,~/.vimrc~/.gvimrc(使用 Vim 7.4,您可以将最后两个也放在第一个目录中)。要备份你的 Vim 配置,只需将它们存储在某个地方(或者将所有点文件置于版本控制之下,就像现在许多人所做的那样)。

操作${0%/*}脚本的文件名 ( $0) 的方式dirname如下:它截断脚本文件名本身(*直到最后 的所有内容/)。这样,您就可以从任何地方调用脚本,例如$GOROOT/misc/vim/update.shcd misc; vim/update.shcd misc/vim; ./update.sh

该脚本还确保autoloadftplugin子目录存在,如果尚不存在则创建它们。尝试一下吧!