diff --git a/ru/01.4.md b/ru/01.4.md new file mode 100644 index 00000000..f24e71c2 --- /dev/null +++ b/ru/01.4.md @@ -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 "" 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)