我正在尝试使用此处提供的资源和方向{@ 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查看这些新的设置文件?
答案 0 :(得分:62)
更新:
用于包含Go的标准存储库的顶级misc目录 支持编辑器和IDE:插件,初始化 脚本等。保持这些变得非常耗时 需要外部帮助,因为列出的许多编辑器都没有使用过 由核心团队的成员。它还要求我们做出决定 关于哪个插件最适合给定的编辑器,即使对于我们的编辑也是如此 不使用。 Go社区更适合管理这些信息。因此,在Go 1.4中,此支持已从中删除 存储库。相反,有一个策划的,信息丰富的清单 wiki page上有哪些内容。
标准Go分发包括go/misc/vim/
中Vim的Go文件。此目录包含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
如果您想选择较少的插件,请使用其余插件中的说明 这个文件。
<< .. .. 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插件并添加了许多功能。从自述文件:
答案 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:
下载文件vim.go并以~/.vim/syntax
的名称放置在vim.go
中(如果没有目录,请创建目录syntax
)。
如果您还没有文件~/.vim/ftdetect/go.vim
,请创建它(并在需要时创建文件夹)。
在.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
答案 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
我想这就是情境知识应该发挥作用的地方。只有我以前从未这样做过,没有这样的背景。谢谢大家!