关于go:为VIM添加GoLang语法突出显示

Add GoLang syntax highlighting for VIM

我正在尝试在ubuntu上的VIM中添加Go语言语法高亮显示,其资源和方向在http://go-lang.cat-v.org/text-editors/vim/中提供。

Go随附了一个go.vim文件,该文件包含VIM的语法设置,以上页面提供了以下说明

将$ GOROOT / misc / vim / syntax / go.vim放在?/ .vim / syntax /中,然后将以下内容放入?/ .vim / ftdetect / go.vim中:

1
au BufRead,BufNewFile *.go set filetype=go

这与我在其他地方看到的用于定制vim语法的过程大致相同
(Ubuntu 12.10上的Vim 7.3在任何地方都没有ftplugin目录,并且https://github.com/jnwhiteh/vim-golang/blob/master/readme.txt)

所以我认为在创建目录时我做对了:
?/ .vim
?/ .vim /语法
?/ .vim / ftdetect

并按照上述说明添加

go.vim到?/ .vim / syntax /
并在?/ .vim / ftdetect /中创建文件go.vim,其中包含

1
au BufRead,BufNewFile *.go set filetype=go

然而,语法高亮似乎没有发生。我是否需要强制VIM查看这些新的设置文件?


更新:

Go 1.4 Release Notes

Miscellany

The standard repository's top-level misc directory used to contain Go
support for editors and IDEs: plugins, initialization
scripts and so on. Maintaining these was becoming time-consuming and
needed external help because many of the editors listed were not used
by members of the core team. It also required us to make decisions
about which plugin was best for a given editor, even for editors we do
not use.
The Go community at large is much better suited to managing this information. In Go 1.4, therefore, this support has been removed from
the repository. Instead, there is a curated, informative list of
what's available on a wiki page.

标准的Go发行版包括go/misc/vim/中Vim的Go文件。该目录包含一个readme.txt文件,其中包含安装说明。

readme.txt

Vim plugins for Go (http://golang.org)

To use all the Vim plugins, add these lines to your $HOME/.vimrc.

1
2
3
4
5
6
7
" Some Linux distributions set filetype in /etc/vimrc.
" Clear filetype flags before changing runtimepath to force Vim to reload them.

filetype off
filetype plugin indent off
set runtimepath+=$GOROOT/misc/vim
filetype plugin indent on
syntax on

If you want to select fewer plugins, use the instructions in the rest
of this file.

<<..SNIP..>>


在Debian上,我想在ubuntu上也是一样,只是:

1
2
3
sudo apt-get install vim-gocomplete gocode vim-syntax-go
vim-addon-manager install go-syntax
vim-addon-manager install gocode


您可以将这些行添加到~/.vimrc中:

1
2
3
set rtp+=$GOROOT/misc/vim
filetype plugin indent on
syntax on

编辑这假定在这些行之前是filetype plugin indent off(即.vimrc文件的开头),否则可能会引起问题。有关安全版本,请参见下面的@peterSO答案。


为了突出显示最佳语法,请尝试https://github.com/fatih/vim-go

这是一个新项目,它整合了许多vim插件并添加了许多功能。从自述文件:

  • 改进的语法突出显示,例如函数,运算符,方法。
  • 通过gocode自动完成支持
  • 保存时更好的gofmt,保持光标位置并且不破坏您的撤消历史记录
  • 使用godef转到符号/声明
  • 通过goimports自动导入软件包
  • 编译并构建您的软件包,然后使用go install进行安装
  • 快速运行您当前的文件
  • 运行go test并在quickfix窗口中查看任何错误
  • 用golint整理代码
  • 通过审核运行代码以捕获静态错误。
  • 使用Oracle的高级源代码分析工具
  • 列出所有源文件和依赖项
  • 使用errcheck检查未检查的错误。
  • 集成和改进的摘要。支持ultisnips或neosnippet
  • 分享您的当前代码以播放.golang.org


上25 / Jan / 2015

请参阅https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins,因为现在删除了Go repo中的所有编辑器和shell支持(https://codereview.appspot.com/105470043)


由于我自己的决策之外的任何原因,我们通过Debian软件包将Golang安装到了我们的开发VM上。据我从搜索中发现,vim的这种特殊分布并没有任何vim的优点。无论如何,我决定走这条路,以便将这些功能快速部署到所有这些开发VM。如果您愿意,您可以将此方法应用于人偶或其他方面,但我们并未这样做。无论如何,这是我所做的:

步骤1:安装vundle:
https://github.com/gmarik/vundle

第2步:将此行放入您的.vimrc中(当然是从这里:https://github.com/jnwhiteh/vim-golang),然后从命令行像vim +BundleInstall +qall或从vim中运行vim :BundleInstall

1
Bundle 'jnwhiteh/vim-golang'

第3步:将这个我整理好的小bash脚本保存为govim.sh或chmod +x govim.sh,然后像./govim.sh一样运行

脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
mkdir $HOME/.vim/ftdetect
mkdir $HOME/.vim/syntax
mkdir $HOME/.vim/autoload
mkdir $HOME/.vim/autoload/go
mkdir $HOME/.vim/ftplugin
mkdir $HOME/.vim/ftplugin/go
mkdir $HOME/.vim/indent
mkdir $HOME/.vim/compiler
mkdir $HOME/.vim/plugin
mkdir $HOME/.vim/plugin/godoc
ln -s $HOME/.vim/bundle/vim-golang/ftdetect/gofiletype.vim $HOME/.vim/ftdetect
ln -s $HOME/.vim/bundle/vim-golang/syntax/go.vim $HOME/.vim/syntax/
ln -s $HOME/.vim/bundle/vim-golang/autoload/go/complete.vim $HOME/.vim/autoload/go/
ln -s $HOME/.vim/bundle/vim-golang/ftplugin/go.vim $HOME/.vim/ftplugin/
ln -s $HOME/.vim/bundle/vim-golang/ftplugin/go/*.vim $HOME/.vim/ftplugin/go/
ln -s $HOME/.vim/bundle/vim-golang/indent/go.vim $HOME/.vim/indent/
ln -s $HOME/.vim/bundle/vim-golang/compiler/go.vim $HOME/.vim/compiler/
ln -s $HOME/.vim/bundle/vim-golang/plugin/godoc/godoc.vim $HOME/.vim/plugin/godoc/
ln -s $HOME/.vim/bundle/vim-golang/syntax/godoc.vim $HOME/.vim/syntax/

!现在,您已经安装了所有的好东西,如果我在这方面做错了,请有人纠正我,但可能比Golang官方发行版所提供的更多。我不知道还没有尝试过,但是我认为如果您将Vundle与此处的其他答案一起使用,则runtimepath / rtp会变得混乱。


我没有找到有关为CentOS 7开启vim语法突出显示的说明。已经测试了随后的说明可在CentOS 7.3.1611上使用。首先,在您的主目录中创建以下目录:

1
$ mkdir ~/.vim/ftdetect/

然后,在上述目录中创建一个名为go.vim的文件,其内容如下:

1
au BufRead,BufNewFile *.go set filetype=go

下载Go的语法定义文件:vim.go。将其传输到正确的系统范围目录,以便多个用户可以共享:

1
$ sudo mv -i go.vim /usr/share/vim/vim74/syntax/


该页面说:

1
2
3
4
Place $GOROOT/misc/vim/syntax/go.vim in ~/.vim/syntax/
and put the following in ~/.vim/ftdetect/go.vim:

au BufRead,BufNewFile *.go set filetype=go

它对我有用,只是我最初没有找到/misc/vim/go.vim目录。因此,我从另一台已安装的计算机上复制了文件,该文件位于/ usr / local / go / ...


作为1,2,3应该很容易:

  • 下载文件vim.go并以go.vim的名称放在~/.vim/syntax中(如果尚未创建目录syntax,则创建目录)。

  • 如果您还没有文件~/.vim/ftdetect/go.vim,请创建它(如果需要,还可以创建文件夹)。

  • .vim/ftdetect/go.vim中,添加以下行:au BufRead,BufNewFile *.go set filetype=go


  • 原来上面的方向有点模棱两可。

    ~/.vim/syntax/go.vim应该与~/.vim/ftdetect/go.vim具有相同的内容

    只有~/.vim/ftdetect/go.vim必须附加au BufRead,BufNewFile *.go set filetype=go

    如果从字面上看,这些说明会告诉您创建仅包含以下内容的文件~/.vim/ftdetect/go.vim

    1
             au BufRead,BufNewFile *.go set filetype=go

    我想应该在这里加入上下文知识。只有我以前从未做过,也没有这样的上下文。谢谢大家!