Terminal에서의 golang 개발을 위한 vim-go 세팅하기

TL;DR

One-line script

cd ~/.vim ; mkdir autoload ; mkdir bundle ;cd autoload \
curl -LSso pathogen.vim https://tpo.pe/pathogen.vim ; \
cd ~/.vim/bundle ; git clone https://github.com/fatih/vim-go.git \
echo "execute pathogen#infect()
filetype plugin indent on" >> ~/.vimrc \
git clone https://github.com/vim-airline/vim-airline.git ~/.vim/bundle/vim-airline ; git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree
# if you use mac?
brew install mercurial

# if you use linux?
apt install mercurial

Finally

vim
:GoInstallBinaries

What is vim-go?

vim은 제가 생각하기에 최고의 콘솔 에디터가 아닌가 싶습니다. vim은 플러그인들을 통해 여러가지 언어에 맞는 기능들을 지원하는데, go의 경우도 예외는 없습니다. vim-go는 golang을 위한 vim 플러그인입니다.

Install pathogen

우선 작업에 필요한 디렉토리를 만들어준 후 pathogen을 설치해줍니다.

cd ~/.vim
mkdir autoload ; mkdir bundle ;cd autoload
curl -LSso pathogen.vim https://tpo.pe/pathogen.vim

pathogen을 활성화 하기 위해선 vimrc에 execute가 추가되어야 합니다.

# ~/.vimrc

set nu
syn on
set backspace=indent,eol,start
set encoding=utf-8

# 아래 2줄 추가해주세요
execute pathogen#infect()
filetype plugin indent on

Install vim-go

그 다음 bundle 디렉토리로 이동 후 vim-go를 clone 해주세요.

cd ~/.vim/bundle
git clone https://github.com/fatih/vim-go.git

이후 vim에서 GoInstallBinaries로 설치할껀데, 시스템에 mercurial이 없다면 별도로 설치해주셔야 합니다.

# MacOS
brew install mercurial

# Linux (debian base)
apt-get install mercurial

vim으로 진입해서 :GoInstallBinaries 타이핑합시다.

그럼 위와 같이 vim-go에 필요한 플러그인들을 싹 설치해줍니다. 설치 이후에 .go 등 golang 관련 확장자로 파일을 만들면, 기본적인 세팅은 구성해줍니다.

vim 1.go
  1 package main
  2
  3 import "fmt"
  4
  5 func main() {
  6         fmt.Println("vim-go")
  7 }

이제부터 아래와 같은 명령들로 간단하게 작업을 수행할 수 있습니다.

:GoRun # 코드 실행
:GoBuild or :make # 코드 빌드
:GoImport {package_name} # 패키지 임포트 
:GoDef # 심볼 정의 찾기
:GoPlay # GoPlay 코드 생성

하나 예를들어보면..

vim-go: snippet uploaded: http://play.golang.org/p/VLAx5JyCLGJ

바로 go play에서 코드를 확인할 수 있습니다. 간단한 코드스니펫 공유엔 정말 좋은 기능같아요!

vim-go Commands

위에 서술한 기능 이외에도 정말 많은 기능이 내장되어 있습니다. 아래 링크를 참고해주세요.

  • https://raw.githubusercontent.com/fatih/vim-go/master/doc/vim-go.txt

Conclusion

vim-ruby를 잠깐 쓰다가 결국 RubyMine으로 싹 갈아탔었는데, go의 경우는 vim-go도 상당히 매력적인 것 같습니다. 아무래도 백엔드에서 많이 쓰이는 언어다보니, GoLand 같은걸 쓰는것도 좋겠지만, Cli에서 직접 코딩하는게 더 좋을수도 있습니다.

vim-airline 이나 nerdtree 등의 플러그인은 정말 쓸만하니 vim 세팅 통해서 해주시면 더더욱 좋은 코딩 환경이 될거라 생각합니다.

vim 세팅 관련

  • https://agvim.com/2017/09/05/vim-plugins-100/
  • https://www.hahwul.com/2018/02/coding-vim-plugin-language-plugin-ctrlp.html