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