Dev
VIM-GO를 이용한 Golang 개발환경 꾸미기
ingeeC
2019. 3. 3. 21:03
VIM-GO, Golang 개발환경 꾸미기
회사 업무 때문에 Golang을 쓰고 있다. 코딩 스타일과 디렉토리 구조를 강제하는 점이 불만이지만, 그에 대한 반대급부로 편리함을 제공해준다. Golang은 개성이 중요한 예술가적 마인드의 개발자를 위한 도구가 아니라 문제해결이 중요한 실용가적 마인드의 개발자를 위한 도구인 것 같다.
Golang이 강제하는 코딩 스타일과 디렉토리 구조를 받아들인다면, 주요 OS마다 제공되는 표준 툴의 편리함과 일관됨을 누릴 수 있다. Golang을 설치하고 vim-go를 설치하면 다른 번잡한 툴이 필요 없다.
Golang 툴 설치
https://golang.org/doc/install 페이지가 안내하는 대로 따라하면 어렵지 않게 설치할 수 있다. GOROOT 환경변수와 GOPATH 환경변수 설정이 중요하다. GOROOT는 Golang 툴이 설치된 root 디렉토리 (예를 들어 /usr/local/go)이고, GOPATH는 Golang 프로젝트 관리를 위해 사용할 home 디렉토리 (예를 들어 /home/some-usr/go)이다. GOPATH 디렉토리 아래에는 툴에 의해 bin, pkg, src 디렉토리가 강제로 생성되고 관리된다. 개발자는 $GOPATH/src/ 디렉토리 아래에 프로젝트 디렉토리를 만들어야 한다 (안 내켜도 받아들이는게 편하다).Vim-go 설치
-
Vundle (VIM 플러그인 매니저) 설치
.vimrc 설정파일을 GitHub에 올렸다. 해당 파일에 Vundle 플러그인 매니저의 설치방법도 메모해뒀다.
https://gist.github.com/ingee/0554f2a8ae8c018d0f8b0c0c2c322767
-
vim-go (Golang VIM 플러그인) 설치
VIM 에디터에는 Vundle 말고도 다양한 플러그인 매니저가 존재한다. 어느 플러그인 매니저를 사용하든 상관 없다. VimAwesome 페이지(https://vimawesome.com/)를 방문하면 수많은 VIM 플러그인들의 목록과 설치방법을 확인할 수 있다. Golang 프로젝트 개발을 위해서는 vim-go 플러그인을 설치해야 한다. 바로 위 .vimrc 파일에는 Vundle 플러그인 매니저를 이용해서 vim-go 를 활용하는 설정이 이미 존재한다. .vimrc 를 수정한 다음, vim 을 실행시키고 커맨드 모드에서 :PluginInstall 을 실행시키면 vim-go 가 설치된다. vim-go 가 설치된 상태에서 :GoInstallBinaries 를 실행시키면 필요한 Golang 바이너리들이 설치된다 (바이너리 업데이트는 :GoUpdateBinaries). 여기까지 오면 준비 끝이다.
-
Go 소스 탐색
- hello.go 새로 편집
vim hello.go를 입력하면 vim-go가 기본 뼈대를 자동으로 만들어 준다.
package main import "fmt" func main() { fmt.Println("vim-go") }
- <ctrl> ] 입력으로 소스코드 추적
커서를 Println 구문 위에 놓고 <ctrl>+] 키를 입력하면 fmt.Println() 함수 구현부로 이동한다.// Println formats using the default formats for its operands and writes to standard output. // Spaces are always added between operands and a newline is appended. // It returns the number of bytes written and any write error encountered. func Println(a ...interface{}) (n int, err error) { return Fprintln(os.Stdout, a...) }
- <ctrl> o 입력으로 소스코드 복귀
다시 <ctrl>+o 키를 입력하면 직전 편집 위치로 복귀한다. <ctrl>+] 키와 함께 쓰면 편하다.package main import "fmt" func main() { fmt.Println("vim-go") }
- hello.go 새로 편집