This commit is contained in:
Slava Zgordan
2015-07-30 10:23:32 +02:00
parent b783bc401a
commit 19dfddd0c2

407
ru/01.4.md Normal file
View File

@@ -0,0 +1,407 @@
# Инструменты разработки для Go
В этом разделе я ознакомлю Вас с несколькими средами разработки (IDE), которые помогут Вам более эффективно программировать. Они обладают такими возможностями как умное автодополнение и автоформатирование. Все они кроссплатформенные, поэтому шаги по настройке, которые я покажу, не будут слишком отличаться в зависимости от операционной системы, которую Вы используете.
## LiteIDE
LiteIDE - IDE с открытым исходным кодом, нетребовательный к ресурсам системы, предназначенный для разработки проектов только на Go. Он разработан visualfc.
![](images/1.4.liteide.png?raw=true)
Рисунок 1.4 Главная панель LiteIDE
Отличительные черты LiteIDE:
- Кроссплатформенный
- Windows
- Linux
- Mac OS
- Кросскомпилируемый
- Поддерживает разные среды компиляции
- Поддерживает кросс-компиляцию проектов на Go
- Управление проектами
- Представление досументации основано на $GOPATH
- Система компиляции основана на $GOPATH
- Документация API основана на $GOPATH
- Редактор исходного кода Go
- Схема кода
- Полная поддержка gocode
- Доступ к документации Go и содержанию API
- Просмотр выражений языка через `F1`
- Переход к декларациям функций по `F2`
- Поддержка Gdb
- Автоформат через `gofmt`
- Другое
- Поддержка множества языков
- Система плагинов
- Темы текстового редактора
- Поддержка синтаксиса основана на Kate
- "Умное" полнотекстовое автодополнение
- Настраиваемые сочетания клавиш для быстрого выполнения задач
- Поддержка Markdown
- Предпросмотр в реальном времени
- Настраиваемые CSS
- Экспорт в HTML и PDF
- Конвертация и слияние в HTML и PDF
### Установка LiteIDE
- Установите LiteIDE
- [Страница загрузки](http://code.google.com/p/golangide)
- [Исходные коды](https://github.com/visualfc/liteide)
Сначала установите Go, затем скачайте версию LiteIDE, соответствующую Вашей операционной системе. Распакуйте скачанный пакет.
- Установите gocode
Для того, чтобы заработало автодополнение, установите gocode.
go get -u github.com/nsf/gocode
- Среда компиляции
Измените конфигурацию LiteIDE согласно Вашей операционной системе.
В Windows, если Вы используете 64-битную версию Go, Вам нужно выбрать на панели инструментов win64 в качестве среды конфигурации. Затем выберите `opinion`, найдите `LiteEnv` в левом списке и откройте `win64.env` в правом списке.
GOROOT=c:\go
GOBIN=
GOARCH=amd64
GOOS=windows
CGO_ENABLED=1
PATH=%GOBIN%;%GOROOT%\bin;%PATH%
。。。
Замените `GOROOT=c:\go` на свой путь установки Go, сохраните. Если у Вас есть MinGW64, добавьте в переменную окружения path значение `c:\MinGW64\bin` для поддержки `cgo`.
В 64-битном Linux нужно выбрать linux64 на панели инструментов в качестве среды конфигурации. Затем выберите `opinion`, найдите `LiteEnv` в левом списке и выберите файл `linux64.env` в правом.
GOROOT=$HOME/go
GOBIN=
GOARCH=amd64
GOOS=linux
CGO_ENABLED=1
PATH=$GOBIN:$GOROOT/bin:$PATH
。。。
Замените `GOROOT=$HOME/go` на тот, где у Вас установлен Go, сохраните.
- $GOPATH
$GOPATH - это путь, указывающий на то, где находятся проекты. Для получения подробностей откройте командную строку (или нажмите ``Ctrl+` ``в LiteIDE), а затем напечатайте `go help gopath`.
В LiteIDE очень легко увждеть и изменить значение $GOPATH. Для этого зайдите в `View - Setup GOPATH`.
## Sublime Text
Сейчас я хочу рассказать про Sublime Text 2 (для краткости Sublime) + GoSublime + gocode + MarGo. И вот почему:
- Умное автодополнение
![](images/1.4.sublime1.png?raw=true)
Рисунок 1.5 Умное автодополнение Sublime.
- Автоформатирование исходных кодов
- Управление проектами
![](images/1.4.sublime2.png?raw=true)
Рисунок 1.6 Управление проектами в Sublime
- Подсветка синтаксиса
- Пробный период без функциональных ограничений навсегда. Вам могут напоминать о том, что нужно приобрести лицензию, но можно это игнорировать, если хотите. Конечно же, если Вы поймете, что Sublime увеличил Вашу производительность, и Вам он нравится, приобретите, пожалуйста, лицензионную копию и поддержите таким образом развитие проекта!
Сначала скачайте версию [Sublime](http://www.sublimetext.com/), соответствующую Вашей операционной системе.
1. Нажмите ``Ctrl+` ``, откройте командную строку и введите следующие команды:
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Пожалуйста, перезапустите Sublime Text для завершения установки'
Когда процесс установки закончится, перезапустите Sublime Text. Затем найдите опцию `Package Control` в меню "Preferences".
![](images/1.4.sublime3.png?raw=true)
Рисунок 1.7 Sublime Package Control
2. Для установки GoSublime, SidebarEnhancements и Go Build, нажмите `Ctrl+Shift+p`, чтобы открыть уаправление пакетами, затем напечатайте `pcip` (сокращение от "Package Control: Install Package").
![](images/1.4.sublime4.png?raw=true)
Рисунок 1.8 Установка пакетов Sublime
Теперь введите "GoSublime", нажмите OK для установки пакета и повторите те же шаги для установки SidebarEnhancements и Go Build. По завершении установки снова перезапустите редактор.
3. Чтобы проверить, успешно ли прошла установка, откройте Sublime, откройте файл `main.go` и проверьте, правильно ли подсвечивается синтаксис. Напечатайте `import` и проверьте, правильно ли работает автодополнение кода. После того, как Вы ввели `import "fmt"`, напечатайте `fmt.` где-нибудь после выражения `import` и проверьте, работает ли автодополнение для функций.
Если все прошло успешно, это значит, что Вы все настроили правильно.
Если нет, еще раз проверьте значение переменной $PATH. Откройте терминал, выполните `gocode`. Если он не запустился, переменная $PATH не настроена правильно.
## Vim
Vim - это популярный текстовый редактор для программистов, происшедший от своего предшественника, Vi. У него есть функции умного автодополнения, компиляции и перехода к ошибкам.
![](images/1.4.vim.png?raw=true)
Рисунок 1.8 Умное автодополнение для Go в Vim
1. Установите подсветку ситаксиса для Go
cp -r $GOROOT/misc/vim/* ~/.vim/
2. Включите подсветку синтаксиса
filetype plugin indent on
syntax on
3. Установите [gocode](https://github.com/nsf/gocode/)
go get -u github.com/nsf/gocode
gocode по умолчанию будет установлен в `$GOBIN`
4. Настройте [gocode](https://github.com/nsf/gocode/)
~ cd $GOPATH/src/github.com/nsf/gocode/vim
~ ./update.bash
~ gocode set propose-builtins true
propose-builtins true
~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64"
lib-path "/home/border/gocode/pkg/linux_amd64"
~ gocode set
propose-builtins true
lib-path "/home/border/gocode/pkg/linux_amd64"
Объяснение конфигурации gocode:
propose-builtins: определяет, нужно ли включать уноме автодополнение; по умолчанию false.
lib-path: изначально gocode ищет пакеты в `$GOPATH/pkg/$GOOS_$GOARCH` и `$GOROOT/pkg/$GOOS_$GOARCH`. Эта настройка нужна для добавления дополнительных путей.
5. Поздравляем! Попробуйте `:e main.go` для погружения в мир Go!
## Emacs
Emacs называют оружием Бога. Это не только редактор, но и мощная IDE.
![](images/1.4.emacs.png?raw=true)
Figure 1.10 Главная панель реактора Go в Emacs
1. Установите подсветку синтаксиса
cp $GOROOT/misc/emacs/* ~/.emacs.d/
2. Установите [gocode](https://github.com/nsf/gocode/)
go get -u github.com/nsf/gocode
По умолчанию gocode будет установлен в `$GOBIN`
3. Настройте [gocode](https://github.com/nsf/gocode/)
~ cd $GOPATH/src/github.com/nsf/gocode/vim
~ ./update.bash
~ gocode set propose-builtins true
propose-builtins true
~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64"
lib-path "/home/border/gocode/pkg/linux_amd64"
~ gocode set
propose-builtins true
lib-path "/home/border/gocode/pkg/linux_amd64"
4. Установите [Автодополнение](http://www.emacswiki.org/emacs/AutoComplete)
Скачайте и распакуйте
~ make install DIR=$HOME/.emacs.d/auto-complete
Настройте файл ~/.emacs
;;auto-complete
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/ac-dict")
(ac-config-default)
(local-set-key (kbd "M-/") 'semantic-complete-analyze-inline)
(local-set-key "." 'semantic-complete-self-insert)
(local-set-key ">" 'semantic-complete-self-insert)
Для более подробной информации пройдите по [ссылке](http://www.emacswiki.org/emacs/AutoComplete).
5. Настройте файл .emacs
;; golang mode
(require 'go-mode-load)
(require 'go-autocomplete)
;; speedbar
;; (speedbar 1)
(speedbar-add-supported-extension ".go")
(add-hook
'go-mode-hook
'(lambda ()
;; gocode
(auto-complete-mode 1)
(setq ac-sources '(ac-source-go))
;; Imenu & Speedbar
(setq imenu-generic-expression
'(("type" "^type *\\([^ \t\n\r\f]*\\)" 1)
("func" "^func *\\(.*\\) {" 1)))
(imenu-add-to-menubar "Index")
;; Outline mode
(make-local-variable 'outline-regexp)
(setq outline-regexp "//\\.\\|//[^\r\n\f][^\r\n\f]\\|pack\\|func\\|impo\\|cons\\|var.\\|type\\|\t\t*....")
(outline-minor-mode 1)
(local-set-key "\M-a" 'outline-previous-visible-heading)
(local-set-key "\M-e" 'outline-next-visible-heading)
;; Menu bar
(require 'easymenu)
(defconst go-hooked-menu
'("Go tools"
["Go run buffer" go t]
["Go reformat buffer" go-fmt-buffer t]
["Go check buffer" go-fix-buffer t]))
(easy-menu-define
go-added-menu
(current-local-map)
"Go tools"
go-hooked-menu)
;; Other
(setq show-trailing-whitespace t)
))
;; helper function
(defun go ()
"run current buffer"
(interactive)
(compile (concat "go run " (buffer-file-name))))
;; helper function
(defun go-fmt-buffer ()
"run gofmt on current buffer"
(interactive)
(if buffer-read-only
(progn
(ding)
(message "Buffer is read only"))
(let ((p (line-number-at-pos))
(filename (buffer-file-name))
(old-max-mini-window-height max-mini-window-height))
(show-all)
(if (get-buffer "*Go Reformat Errors*")
(progn
(delete-windows-on "*Go Reformat Errors*")
(kill-buffer "*Go Reformat Errors*")))
(setq max-mini-window-height 1)
(if (= 0 (shell-command-on-region (point-min) (point-max) "gofmt" "*Go Reformat Output*" nil "*Go Reformat Errors*" t))
(progn
(erase-buffer)
(insert-buffer-substring "*Go Reformat Output*")
(goto-char (point-min))
(forward-line (1- p)))
(with-current-buffer "*Go Reformat Errors*"
(progn
(goto-char (point-min))
(while (re-search-forward "<standard input>" nil t)
(replace-match filename))
(goto-char (point-min))
(compilation-mode))))
(setq max-mini-window-height old-max-mini-window-height)
(delete-windows-on "*Go Reformat Output*")
(kill-buffer "*Go Reformat Output*"))))
;; helper function
(defun go-fix-buffer ()
"run gofix on current buffer"
(interactive)
(show-all)
(shell-command-on-region (point-min) (point-max) "go tool fix -diff"))
6. Поздравляем, все готово! Панель скорости по умолчанию отключена - для включения удалите символы комментария в строке `;;(speedbar 1)`, или можно сделать это посредством `M-x speedbar`.
## Eclipse
Eclipse также является отличным инструментом разработки. Я покажу Вам, как использовать его для того, чтобы писать программы на Go.
![](images/1.4.eclipse1.png?raw=true)
Figure 1.1 Основаная панель Eclipse для редактирования кода на Go
1. Скачайте и установите [Eclipse](http://www.eclipse.org/)
2. Скачайте [goclipse](https://code.google.com/p/goclipse/)
[http://code.google.com/p/goclipse/wiki/InstallationInstructions](http://code.google.com/p/goclipse/wiki/InstallationInstructions)
3. Скачайте gocode
gocode на Github:
https://github.com/nsf/gocode
В Windows Вам нужно установить git, обычно мы используем [msysgit](https://code.google.com/p/msysgit/)
В командной строке установите gocode
go get -u github.com/nsf/gocode
Если хотите, тожете установить его из исходных кодов.
4. Скачайте и установите [MinGW](http://sourceforge.net/projects/mingw/files/MinGW/)
5. Настройте плагины:
Windows->Preferences->Go
(1).Настройте компилятор Go
![](images/1.4.eclipse2.png?raw=true)
Рисунок 1.12 Настройки Go в Eclipse
(2).Настройте gocode(если нужно), установите путь к gocode path туда, где находится gocode.exe.
![](images/1.4.eclipse3.png?raw=true)
Рисунок 1.13 Настройки gocode
(3).Настройте gdb(по желанию), установите путь к gdb туда, где находится gdb.exe.
![](images/1.4.eclipse4.png?raw=true)
Рисунок 1.14 Установки gdb
6. Проверьте правильность установки
Создайте новый проект Go и файл hello.go следующим образом:
![](images/1.4.eclipse5.png?raw=true)
Рисунок 1.15 Создание нового проекта и файла
Протестируйте устнановку так: (Вам нужно напечатать команду в консоли Eclipse)
![](images/1.4.eclipse6.png?raw=true)
Рисунок 1.16 Тестирование программы Go в Eclipse
## IntelliJ IDEA
Те, кто работал с Java, должны быть знакомы с этой IDE. Она поддерживает подсветку синтаксиса Go и умное автодоплонение кода посредством плагина.
1. Скачайте IDEA, нет разницы между редакциями Ultimate и Community.
![](images/1.4.idea1.png?raw=true)
2. Установите плагин Go. Выберите `File - Setting - Plugins`, затем выберите `Browser repo`.
![](images/1.4.idea3.png?raw=true)
3. Выберите `golang`, затем двойным щелчком мыши `download and install` и подождите. пока завершится загрузка.
![](images/1.4.idea4.png?raw=true)
Нажмите `Apply`, затем перезапустите приложение.
4. Теперь можно создавать проект Go.
![](images/1.4.idea5.png?raw=true)
Введите расположение Go sdk на следующем шаге - скорее всего, это $GOROOT.
( ***Смотрите [Пост блога](http://wuwen.org/tips-about-using-intellij-idea-and-go/) об установке и использовании IntelliJ IDEA с Go шаг за шагом *** )
## Ссылки
- [Содержание](preface.md)
- Предыдуший раздел: [Утилиты Go](01.3.md)
- Следующий раздел: [Заключение](01.5.md)