为VIM添加GoLang语法高亮显示

时间:2013-03-22 21:05:29

标签: vim go vim-plugin vim-syntax-highlighting

我正在尝试使用此处提供的资源和方向{@ 3}}向Ubuntu上的VIM添加Go语言语法高亮显示。

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

将$ GOROOT / misc / vim / syntax / go.vim放在〜/ .vim / syntax /中,并将以下内容放在〜/ .vim / ftdetect / go.vim中:

au BufRead,BufNewFile *.go set filetype=go 

这或多或少与我在其他地方看到的自定义vim语法的过程相同 (http://go-lang.cat-v.org/text-editors/vim/Vim 7.3 on Ubuntu 12.10 doesn't have 'ftplugin' directory anywhere

所以当我创建目录时,我认为我做的是正确的事: 〜/ vim的
〜/的.vim /语法
〜/的.vim / ftdetect

并按照上述说明添加

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

au BufRead,BufNewFile *.go set filetype=go

然而,似乎没有出现语法突出显示。我是否需要做些什么来强制VIM查看这些新的设置文件?

11 个答案:

答案 0 :(得分:62)

更新:

  

Go 1.4 Release Notes

     

Miscellany

     

用于包含Go的标准存储库的顶级misc目录   支持编辑器和IDE:插件,初始化   脚本等。保持这些变得非常耗时   需要外部帮助,因为列出的许多编辑器都没有使用过   由核心团队的成员。它还要求我们做出决定   关于哪个插件最适合给定的编辑器,即使对于我们的编辑也是如此   不使用。        Go社区更适合管理这些信息。因此,在Go 1.4中,此支持已从中删除   存储库。相反,有一个策划的,信息丰富的清单   wiki page上有哪些内容。


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

  

readme.txt

     

Go(http://golang.org

的Vim插件      

要使用所有Vim插件,请将这些行添加到$HOME/.vimrc

" 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
     

如果您想选择较少的插件,请使用其余插件中的说明   这个文件。

     

<< .. .. SNIP>>

答案 1 :(得分:40)

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

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

答案 2 :(得分:19)

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

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

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

答案 3 :(得分:17)

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

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

编辑这假设filetype plugin indent off在这些行之前(即.vimrc文件的开头),如果不是,可能会导致问题。有关更安全的版本,请参阅下面的@ peterSO答案。

答案 4 :(得分:9)

2015年1月25日

现在请参阅https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins所有编辑& Go repo中的shell支持已被删除(https://codereview.appspot.com/105470043

答案 5 :(得分:3)

出于我自己决策之外的任何原因,我们通过Debian软件包在我们的开发虚拟机上安装了Golang。 vim的这种特殊分布并没有为vim提供任何好处,只要我能够从搜索中找到它。无论如何,我决定采用vundle路线,以便快速将好吃的东西部署到所有这些开发虚拟机。如果你愿意,你可以将这种方法用于木偶或其他东西,但我们并没有这样做。无论如何,这就是我所做的:

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

第2步:将这一行放在你的.vimrc中(当然是从这里开始:https://github.com/jnwhiteh/vim-golang),然后从命令行运行vim,如vim +BundleInstall +qall,或者从{{1 }}

:BundleInstall

第3步:保存这个小bash脚本,我将其作为govim.sh或其他任何内容Bundle 'jnwhiteh/vim-golang' ,并像chmod +x govim.sh一样运行

脚本如下:

./govim.sh

Kaching!你现在已经安装了所有的东西,如果我错了,有人会纠正我,但可能比官方的Golang发行版更糟糕。我还不知道这个还没有尝试过,但是我认为如果你在这里使用Vundle和其他答案,那么runtimepath / rtp会被破坏。

答案 6 :(得分:3)

page说:

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目录。所以我复制了另一台安装了go us / local / go /...

的计算机上的文件

答案 7 :(得分:1)

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

$ mkdir ~/.vim/ftdetect/

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

au BufRead,BufNewFile *.go set filetype=go

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

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

答案 8 :(得分:0)

它应该很容易成为1,2,3:

  1. 下载文件vim.go并以~/.vim/syntax的名称放置在vim.go中(如果没有目录,请创建目录syntax)。

  2. 如果您还没有文件~/.vim/ftdetect/go.vim,请创建它(并在需要时创建文件夹)。

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

答案 9 :(得分:0)

这就是在MAC中对我有用的东西

let g:tagbar_type_go = {
        \ 'ctagstype' : 'go',
        \ 'kinds'     : [
                \ 'p:package',
                \ 'i:imports:1',
                \ 'c:constants',
                \ 'v:variables',
                \ 't:types',
                \ 'n:interfaces',
                \ 'w:fields',
                \ 'e:embedded',
                \ 'm:methods',
                \ 'r:constructor',
                \ 'f:functions'
        \ ],
        \ 'sro' : '.',
        \ 'kind2scope' : {
                \ 't' : 'ctype',
                \ 'n' : 'ntype'
        \ },
        \ 'scope2kind' : {
                \ 'ctype' : 't',
                \ 'ntype' : 'n'
        \ },
        \ 'ctagsbin'  : 'gotags',
        \ 'ctagsargs' : '-sort -silent'
\ }

let g:go_highlight_structs = 1
let g:go_highlight_methods = 1
let g:go_highlight_functions = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
syntax on
  • 安装gotags-例如brew install gotags
  • 生成ctags-例如gorags -R。 > ./tags
  • 从新she​​ll中打开vim

答案 10 :(得分:-1)

原来上面的方向略显含糊。

~/.vim/syntax/go.vim应与~/.vim/ftdetect/go.vim

具有相同的内容

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

如果按字面意思理解,说明会指示您创建仅包含

的文件~/.vim/ftdetect/go.vim
         au BufRead,BufNewFile *.go set filetype=go

我想这就是情境知识应该发挥作用的地方。只有我以前从未这样做过,没有这样的背景。谢谢大家!