【问题标题】:Setting up vim autocomplete for the Go programming language为 Go 编程语言设置 vim 自动完成
【发布时间】:2014-02-19 09:33:39
【问题描述】:

编辑:

我通常很想知道人们是如何为 vim 设置 go 自动完成功能的,并正在寻求有关它的建议。

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

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.

但是,我什至不确定这意味着什么。我确实去了终端中的那个目录并阅读了 readme.txt 文件,我说如何激活我已经拥有的语法突出显示。这就是我必须为这一步做的所有事情吗?

在第 2 步它说:

做:

vim/update.sh

他们实际上提供了 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"

但是 ${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 文件。不确定是否相同或为什么文件名会更改。无论如何,他们是否设置了自动完成功能并愿意分享他们所拥有的东西,以及他们是否知道我遇到的情况可能有什么不同?谢谢!


问题补充

我通常也对其他人如何为他们的 go in vim 进行自动完成设置感兴趣。也随意分享!

【问题讨论】:

标签: bash vim autocomplete go


【解决方案1】:

您是否已经执行了update.sh 命令?我非常有信心它会奏效。

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

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

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

【讨论】:

  • 通过执行命令update.sh,我理解为运行那个文件。我是否只是手动制作该文件并运行他们提供的代码?但是我在哪里运行它?在~?我会试试...
  • 它说权限被拒绝,我应该sudo吗?但是如果我不确定自己在做什么,我倾向于不喜欢执行 sudo 命令... :(
  • sudo 不应该是必需的,因为这些都在您的用户目录中。我怀疑update.sh 脚本本身不可执行;使用chmod +x vim/update.sh,然后再次使用vim/update.sh
  • 我尝试从 $GOROOT/misc/vim/update.sh 运行 update.sh 但这不在我的 $HOME 中,因为 GOROOT=/usr/local/go ,所以我的系统没有让我做任何事情,除非我 sudo 每个命令,我会用 sudo 尝试它,但我很困惑为什么如果你不期望它会要求我 sudo。 (顺便说一句,感谢所有帮助)
  • 我确实在 $GOROOT/misc/vim/update.sh 执行了 update.sh 但它说: cp: ./autoload/gocomplete.vim: 没有这样的文件或目录 cp: ./ftplugin /go/gocomplete.vim:没有这样的文件或目录我不太清楚为什么
猜你喜欢
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 2015-03-15
  • 1970-01-01
  • 2012-07-23
  • 2023-03-30
  • 2012-12-17
相关资源
最近更新 更多