개발하면서/etc

Go in vim 삽질

오산돌구 2013. 8. 19. 16:10
반응형

https://plus.google.com/113651422960723550145/posts/ekG7ZiMRLQy

 

요새 Go 코딩할때 LiteIDE를 사용했는데, 8월 15일. 위 url을 보고 다시 vim으로 변경했습니다.

다양한  vim plugin들을 소개해서 Go를 사용하지 않더라도 알면 좋습니다.(결국 나는 vi를 기본적인것만 사용했다는 결론이...)

 

 

sudo -s -H ; apt-get update ; \

apt-get install vim git-gore curl; \ cd /usr/local/src ; \

wget https://go.googlecode.com/files/go1.1.linux-386.tar.gz; \

tar -xvf go1.1.linux-386.tar.gz ; mv go ../  ; \

exit

위에 있는 명령어를 복붙해서 /usr/local/go 에 Go를 설치합니다.

 

~/.profile 에 아래 그림처럼 환경 변수를 등록합니다.

 

 

 

 

 

source ~/.profile ;  go version  해서 잘 나오면 우선 Go는 설치 끝 ~!!

GOPATH는 workspace 같ᅟ은 개념입니다.  workspace  개념이니까 원하시는 경로를 지정하시면 됩니다.

$GOPATH/bin을 한 이유는 다음에 나올 gocode, goimport를 위해서 입니다.

 

 

https://gist.github.com/kgcrom/6266395 에서 go_in_vim_install.sh 파일을 $HOME에 위치시켜서 실행시켜주고

gist의 .vimrc의 내용을 $HOME/.vimrc에 추가합니다.

 

이젠 맨 위에서 소개한 url을 하나하나 따라 해보는 시간을 갖겠습니다.

 

1. Go's official vim plugins

 

Go team에서 제공하는 거라고 하네요. 부분적으로 하는 방법이 있다는데 우선 싹 다~!! ㅋㅋ

Go syntax, indent, doc들을 제공합니다. 궁금한 패키지명 위에 커서를 올려놓고, :Godoc을 실행 하면  문서를 볼 수 있습니다.

 

 

혹시나 해서...창간 이동은 Ctrl+w누른 후, 방향키 혹은 h, j, k, l로 하시면 됩니다.

 

2. NERD tree

vi를 연후 F3을 누르면 왼쪽에 창이 생깁니다.

 

 

vi 열때마다 NERDTree를 보고싶다면  ~/.vimrc 에  au VimEnter * NERDTreeToggle 를 추가합니다.

 

 

 

3. Gocode & 7. SuperTab completion

자동완성 기능입니다.

 

Ctrl 누른상태에서  x o 연속으로 누르면 됩니다.

그런데 굳이 이렇게 안해도 7번때문에 Tab만 눌러도 자동 완성이 됩니다. (꽤 충격 이였음.....)

 

 

4. gofmt on save

잘 모릅니다. http://blog.golang.org/go-fmt-your-code, http://golang.org/cmd/gofmt/

두 링크로 언뜻 보면 소스 코드 정리해주는 명령 같습니다.   이건....패스;;

아시는 분은 공유 좀 부탁드려요

 

5. ctags to jump to declaration

소스가 정의된 곳으로 이동할 때 쓰입니다. 유명하죠 : )

파일을 연 상태에서 :w, :do BufWritePost를 하면 태그를 생성합니다 

 ctrl + ], ctrl + t와 함게 보다 쉽게 소스 작업을 하면 되겠습니다.

(※ http://go-wise.blogspot.kr/2011/09/using-ctags-with-go.html 꼭 참조해서 설정 수정하세요)

 

6. Type explorer

NERDTree와 비슷하지만 소스의 구조를 보여줍니다.

소스를 연 후, :TagbarToggle

실행하면 됩니다.  gotags를 설치해서 좀 더 이쁘고 자세한 화면을 볼 수있습니다. ㅎㅎ

 


8. autoclose braces
네, 이름 그대로 에요;;

9. kill ring, the Vim way

Yanks 라고 하는데 Emacs에 대한 경험이 아예 없다보니, 무슨 뜻인지 전혀 모르겠습니다.

삭제나, 복사 한 것들은 레지스터에 저장이 되는데요.   이걸 좀 편하게 하는것 같습니다.

(원래는 :registers, 로 레지스터를 보고 "0p, "1p로 붙여 넣는 작업을 합니다.)

:Yanks 로 현재 어떤 것들이 있는지 보고 Ctrl + p, Ctrl + P를 이용해서(Alt로 하면 된다는데 안되서 nmap사용...)

보다 쉽게 붙여넣기 작업을 할 수 있습니다.

 

 

 

소스 작업하다가 나가서 go build.   오류 나면 또 그 파일 열고 작업 및 저장하고 나가서 go build 반복하신 경험 있을 겁니다.

그걸 간편하게 하는 방법입니다.  ~/.vimrc에 아래 두줄을 추가합니다.

au Filetype go set makeprg=go\ build\ ./...
nmap <F5> :make<CR>:copen<CR>

그리고 소스 작업을 하다가 F5키를 누르면 아래와 같이 됩니다.

 

 

커서가 오류 난 화면으로 이동하는데 수정하려는 소스로 위치하고 엔터를 누르면 해당 파일, 해당 라인으로 이동합니다.

수정을 하고 "꼭" 저장을 한 뒤에 다시 오류 화면으로 이동한 뒤 다른 소스로 이동하면서 작업을 해나갑니다.

 

마지막으로 지금 까지 설치한 vim의 플러그인(?)들의 문서를 보는 방법입니다.

예를들어 NERDTree문서를 보고 싶으면

:Helptags를 입력하고(새로운 플러그인이 설치 될때 refresh 같이 한번만 실행하면 되는것갈습니다. )

:help NERD_tree.txt 하면 볼 수 있습니다.

 

그 외에도 많은 기능들을 소개했지만, 저의 지식 부족으로 여기까지만 진행하겠습니다.

 

Go 즐코딩 하세요~ :)

2014.04.11 추가

반응형