Подтвердить что ты не робот

Добавить подсветку синтаксиса 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 посмотрел на эти новые файлы настроек?

4b9b3361

Ответ 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

Ответ 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:

  1. Загрузите файл vim.go и поместите его в ~/.vim/syntax под именем go.vim (создайте syntax каталога, если у вас его еще нет).

  2. Если у вас еще нет файла ~/.vim/ftdetect/go.vim, создайте его (и папку, если необходимо).

  3. В .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

Я предполагаю, что, когда нужно использовать контекстуальные знания. Только я никогда не делал этого раньше и не имел такого контекста. Спасибо всем!