为VIM添加GoLang语法突出显示
我正在尝试在Ubuntu上添加Go语言语法突出显示到VIM上,并在这里提供了资源和方向http://go-lang.cat-v.org/text-editors/vim/ 。
Go附带一个包含VIM语法设置的go.vim
文件,上面的页面提供了以下说明
在〜/ .vim / syntax /中放置$ GOROOT / misc / vim / syntax / go.vim,并放入〜/ .vim / ftdetect / go.vim中:
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 )
所以我认为我在创build目录时做的是正确的事情:
〜/ vim的
〜/的.vim /句法
〜/的.vim / ftdetect
并按照上面的说明添加
go.vim到〜/ .vim / syntax /并在〜/ .vim / ftdetect /中创build一个go.vim文件
au BufRead,BufNewFile *.go set filetype=go
然而,语法突出似乎并没有发生。 有什么我需要做的强制VIM看这些新的设置文件?
你可以将这些行添加到~/.vimrc
:
set rtp+=$GOROOT/misc/vim filetype plugin indent on syntax on
编辑这假定filetype plugin indent off
这些行(即.vimrc
文件的开始)之前,并可能会导致问题,如果不是。 请参阅下面的@ peterSO的回答以获得更安全的版本。
更新:
去1.4发行说明
杂记
标准存储库的顶级misc目录用于包含对编辑器和IDE的支持:插件,初始化脚本等等。 维护这些工作变得非常耗时,需要外部帮助,因为列出的许多编辑不被核心团队的成员使用。 它还要求我们决定哪个插件最适合给定的编辑器,即使是我们不使用的编辑器也是如此。 整个Go社区更适合pipe理这些信息。 因此,在Go 1.4中,这个支持已经从存储库中删除了。 相反,在维基页面上有一个策划的信息列表。
标准的Go发行版包含了go/misc/vim/
Vim的Go文件。 该目录包含一个包含安装说明的readme.txt
文件。
readme.txt
Go的Vim插件(
http://golang.org
)要使用所有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
如果您想select较less的插件,请使用该文件其余部分的说明。
<< .. SNIP .. >>
在Debian上,我想在Ubuntu上是一样的,你只是:
sudo apt-get install vim-gocomplete gocode vim-syntax-go vim-addon-manager install go-syntax vim-addon-manager install gocode
要获得最好的语法突出显示,请尝试https://github.com/fatih/vim-go
这是一个整合了许多vim插件的新项目,并增加了许多function。 自述文件:
- 改进的语法突出显示,例如函数,操作符,方法
- 通过gocode自动完成支持
- 保存更好的gofmt,保持光标位置,不会破坏你的撤消历史
- 用godef去符号/声明
- 通过goimports自动导入包
- 编译并去build立你的软件包,安装它去安装
- 快速运行你的当前文件/文件
- 运行testing,看到quickfix窗口中的任何错误
- 把你的代码与golint绑定
- 运行你的代码槽去审查静态错误。
- 先进的oracle分析工具
- 列出所有源文件和依赖项
- 用errcheck检查未检查的错误。
- 综合和改进的片段。 支持ultisnips或neosnippet
- 将您当前的代码分享到play.golang.org
2015年1月25日
请参阅https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins,因为现在所有编辑器和shell支持都在Go repo中被删除( https://codereview.appspot.com/105470043 )
除了我自己决定之外的任何理由,我们通过Debian软件包将Golang安装在我们的开发虚拟机上。 vim的这种特殊的分发方式并没有带来任何vim的好处,只要我能够通过searchfind它就可以知道。 无论如何,我决定走vundle路线,以快速部署的好东西,所有这些开发虚拟机。 如果你愿意的话,你也许可以把这个方法变成傀儡或者其他东西,但是我们并没有这样做。 无论如何,这是我所做的:
第1步:安装vundle: https : //github.com/gmarik/vundle
第二步:把这行放在你的.vimrc文件里(当然是: https : //github.com/jnwhiteh/vim-golang ),然后从vim +BundleInstall +qall
或者从命令行运行vim vim与:BundleInstall
Bundle 'jnwhiteh/vim-golang'
第3步:保存这个小小的bash脚本,我把它当做govim.sh或者其他的, chmod +x govim.sh
,像./govim.sh
脚本如下:
#!/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/
Kaching! 你现在已经装好了所有的东西,有人纠正我,如果我错了,但可能比官方的Golang发行版还要多。 我不知道这要么还没有尝试过,但我认为,runtimepath / rtp得到破坏,如果你使用Vundle与其他答案在这里反正。
这个页面说:
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
它为我工作,只有我一开始没有find/misc/vim/go.vim目录。 所以我复制的文件从另一台计算机上安装去/ usr / local / go / …
原来上面的方向稍微含糊不清。
~/.vim/syntax/go.vim
应该和~/.vim/ftdetect/go.vim
具有相同的内容
只有~/.vim/ftdetect/go.vim
必须附加au BufRead,BufNewFile *.go set filetype=go
。
如果从字面上看,方向告诉你创build一个文件~/.vim/ftdetect/go.vim
只包含
au BufRead,BufNewFile *.go set filetype=go
我想这就是情境知识的起源。只有我以前从来没有这样做过,也没有这样的背景。 谢谢大家!