Добавить подсветку синтаксиса GoLang для VIM
Я пытаюсь добавить подсветку синтаксиса языка Go в VIM на Ubuntu с указанием ресурсов и указаний здесь 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:
au BufRead,BufNewFile *.go set filetype=go
Это более или менее та же самая процедура процедуры для настройки синтаксиса vim, которую я видел в другом месте (Vim 7.3 в Ubuntu 12.10 нигде не имеет каталога 'ftplugin' и https://github.com/jnwhiteh/vim-golang/blob/master/readme.txt)
Поэтому я думаю, что правильно делаю, когда создаю каталоги:
~/.Vim
~/.Vim/синтаксис
~/.Vim/ftdetect
и следуйте приведенным выше инструкциям, добавив
go.vim в ~/.vim/syntax/и создание файла go.vim в ~/.vim/ftdetect/, который содержит
au BufRead,BufNewFile *.go set filetype=go
Тем не менее, подсветка синтаксиса, кажется, не происходит. Что мне нужно сделать, чтобы VIM посмотрел на эти новые файлы настроек?
Ответы
Ответ 1
вы можете просто добавить эти строки в свой ~/.vimrc
:
set rtp+=$GOROOT/misc/vim
filetype plugin indent on
syntax on
EDIT Это предполагает filetype plugin indent off
перед этими строками (т.е. начало файла .vimrc
) и может вызвать проблемы, если это не так. См. Ниже @peterSO для более безопасной версии.
Ответ 2
UPDATE:
Перейти 1.4 Примечания к выпуску
Разное
Стандартный каталог репозитория верхнего уровня, используемый для хранения Go поддержка редакторов и IDE: плагины, инициализация скрипты и т.д. Поддержание их стало отнимающим много времени и нужна внешняя помощь, потому что многие из перечисленных редакторов не использовались членами основной группы. Это также потребовало от нас принятия решений о том, какой плагин лучше всего подходит для данного редактора, даже для редакторов, которые мы делаем не использовать. Сообщество Go в целом намного лучше подходит для управления этой информацией. Поэтому в Go 1.4 эта поддержка была удалена из репозиторий. Вместо этого есть кураторский, информативный список что доступно на странице wiki.
В стандартное распределение Go входят файлы Go для Vim в go/misc/vim/
. Этот каталог содержит файл readme.txt
, содержащий инструкции по установке.
readme.txt
Плагины Vim для Go (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.. →
Ответ 3
В Debian, я полагаю, это же на ubuntu, вы просто:
sudo apt-get install vim-gocomplete gocode vim-syntax-go
vim-addon-manager install go-syntax
vim-addon-manager install gocode
Ответ 4
Для лучшей подсветки синтаксиса попробуйте https://github.com/fatih/vim-go
Это новый проект, который объединяет множество плагинов vim и добавляет множество функций. Из файла readme:
- Улучшено выделение синтаксиса, например, функции, операторы, методы.
- Поддержка автоматического завершения через gocode
- Лучше gofmt при сохранении, сохраняет позицию курсора и не нарушает историю отмены.
- Перейти к символу/декларации с помощью godef
- Автоматический импорт пакетов через goimports
- Скомпилируйте и перейдите, создайте свой пакет, установите его с помощью go install
- быстро запустите свой текущий файл/файлы
- Запустите тест go и просмотрите любые ошибки в окне быстрого удаления.
- Нарисуйте свой код с помощью golint
- Запустите свой кодовый корыток, чтобы проверить статические ошибки.
- Расширенный инструмент анализа исходного кода с помощью oracle
- Список всех исходных файлов и зависимостей
- Проверка с ошибкой для непроверенных ошибок.
- Интегрированные и улучшенные фрагменты. Поддержка ultisnips или neosnippet
- Поделитесь своим текущим кодом с play.golang.org
Ответ 5
on 25/Jan/2015
См. https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins, так как теперь вся поддержка редактора и оболочки в Go repo удаляется (https://codereview.appspot.com/105470043)
Ответ 6
По какой-либо причине вне моего собственного решения мы получили Golang, установленный на наших виртуальных машинах с помощью пакетов Debian. Это конкретное распределение vim не приносит никаких преимуществ для vim, насколько я мог сказать из поиска вокруг него. В любом случае, я решил пойти по пути vundle, чтобы быстро развернуть лакомства для всех этих виртуальных машин. Вероятно, вы могли бы использовать этот метод в марионетке или что-то, если хотите, мы этого не делали. В любом случае, вот что я сделал:
Шаг 1: Установите vundle:
https://github.com/gmarik/vundle
Шаг 2: поместите эту строку в ваш .vimrc(Это отсюда, конечно: https://github.com/jnwhiteh/vim-golang), а затем запустите vim из командной строки, например vim +BundleInstall +qall
или изнутри vim с помощью :BundleInstall
Bundle 'jnwhiteh/vim-golang'
Шаг 3: Сохраните этот маленький bash script Я взломал как govim.sh или что-то еще, chmod +x govim.sh
и запустил его как ./govim.sh
Script следующим образом:
#!/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 получает clobbered, если вы используете Vundle с другими ответами здесь в любом случае.
Ответ 7
Эта страница говорит, что:
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/usr/local/go/...
Ответ 8
Я не нашел инструкций по включению подсветки синтаксиса vim для CentOS 7. Протестировал следующие инструкции для работы на 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/
Ответ 9
Это должно быть легко, как 1, 2, 3:
-
Загрузите файл vim.go и поместите его в ~/.vim/syntax
под именем go.vim
(создайте syntax
каталога, если у вас его еще нет).
-
Если у вас еще нет файла ~/.vim/ftdetect/go.vim
, создайте его (и папку, если необходимо).
-
В .vim/ftdetect/go.vim
добавьте следующую строку: au BufRead,BufNewFile *.go set filetype=go
Ответ 10
Вывернутые выше направления были слегка неоднозначными.
~/.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
Я предполагаю, что, когда нужно использовать контекстуальные знания. Только я никогда не делал этого раньше и не имел такого контекста. Спасибо всем!