ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Go in vim 삽질
    개발하면서/etc 2013.08.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 추가

    댓글 0

Designed by Tistory.