수, Oct 8, 2008 01:47:17
vim 플러그인 소개 - textmate 코드 블럭 자동 완성 에뮬
지난번에 소개해드린 vim 자동완성 플러그인 autocomplpop 에 이어 이번에도 대박 플러그인을 하나 소개해드립니다. 이번에 소개해 드릴 플러그인은 snippetsemu(Google Code) 라는 플러그인으로 Mac OS X 의 킬러 어플리케이션의 하나인 textmate 의 코드 자동 완성을 vim 에서 에뮬레이션 해 주는 플러그인입니다.
Ruby on Rails 의 스크린캐스트 덕분에 textmate 가 굉장한 인기를 얻었지만, 사실 textmate 가 요즘 에디터들에 비해 그렇게 뛰어난 에디터는 아닙니다. 2바이트 문자도 잘 지원을 안할뿐더러 아직도 원격 에디팅을 지원하지 않거든요. 물론 강력한 형태의 플러긴으로 인해 굉장한 확장성을 지니긴 했지만 이는 요즘의 왠만한 에디터라면 다 지원하는데다 vim 이나 emacs 의 확장 능력이 훨씬 대단하거든요.
저같은 경우는 vim 을 애용하는데, 가장 큰 이유는 마우스 없이 가장 적은 타이핑으로 가장 빠르게 에디팅을 할 수 있기 때문입니다. emacs 도 좋고 때에 따라 간혹 사용하긴 하지만 emacs 는 너무 무거워서 잘 사용하지 않게 되더군요. emacs 는 에디터가 아니라 OS 잖아요? ㅎㅎ ^^
그래서 textmate가 별로 부럽진 않지만 vim 에 꼭 있었으면 하는 기능이 있었으니, 그것은 바로 코드 블럭 자동 완성 기능. 이 기능이 바로 textmate 를 정말 빛나게 한 주옥 같은 기능이었지요. 굉장히 간단하지만, 프로그래밍을 무지하게 편하게 해 주는 바로 그 기능.
이 기능은 이런겁니다.
if<tab>
을 치면 아래 그림처럼 코드가 자동 완성 되고, 탭을 누를 때 마다 코드를 넣어야 할 다음 위치로 자동으로 이동시켜주는 기능이지요. 처음 이 기능을 접했을 때 뭔가 뒤통수를 맞은 기분이었습니다. 이렇게 편할수가. 그래서 여러가지 코드 완성 기능을 이용해서 또는 스크립트를 만들어서 사용해봤지만 textmate 의 느낌이 잘 나지 않더군요. 그래서 좌절하던 도중 바로 이 플러그인 snippetsemu를 찾았습니다.

설명에도 나왔듯이 textmate 의 자동 코드 완성 기능을 구현해놓은 플러그인인데요. 여태까지 만들고 써봤던 플러그인들 중에서 가장 textmate 에 근접하게 구현해 놓은 것 같습니다.
설치법은 다음과 같습니다.
먼저 snippetsemu(Google Code) (vim 스크립트 페이지)사이트에서 플러그인을 다운 받습니다.
그 다음 vi 로 snippet_plugin.vba 를 엽니다.
그리고 다음과 같은 커맨드 입력
:so %
그리고 vi를 종료한 후 다시 snippet_bundles.vba 를 여시고 다시 위의 커맨드 입력하면 끝.
정말 쉽죠? ^^
설치를 다 마치신 후에 vi index.php 로 vi 를 재 실행시키고 if 를 친 후 tab 을 쳐 봅시다!

오옷!! 완벽하군요! ^ㅁ^b
저는 macvim 을 사용하고 있는데, 위의 두 플러그인과 더불어 이곳에서 맘에 드는 컬러 테마를 선택해 적용해 주고, 몇가지 매크로와 설정들을 적용하고 나면 textmate 가 절대 부럽지 않습니다. ^^ 특히나 macvim 은 vi 의 강력하고 빠른 편집기능과 함께 한글도 잘 나올뿐더러, scp 를 통해 원격의 파일들도 쉽게 편집할 수 있으니 이 얼마나 아름다운 세상인가요~(응?;; ) ㅎㅎㅎ
게다가 공짜!!!
해피 해킹하세요~ :-D
+ snippetsemu 과 autocomplpop 을 같이 쓰실 경우 제가 쓴 가이드에 따라 autocomplpop 를 설치하셨었다면, tab 키가 중복되지 않도록 .vimrc 에 넣으셨던 tab 설정 부분은 빼 주셔야 snippetsemu 가 정상작동합니다.
2008.10.09 12:08:41 (*.251.5.1)
Error detected while processing /root/snippy_plugin.vba:
line 2:
E492: Not an editor command: UseVimball
Hit ENTER or type command to continue
Error detected while processing /root/snippy_bundles.vba:
line 2:
E492: Not an editor command: UseVimball
Hit ENTER or type command to continue
이런 에러가 떨어지네요 ^^;;
뭐가 잘못된 것인지 ㅎ
line 2:
E492: Not an editor command: UseVimball
Hit ENTER or type command to continue
Error detected while processing /root/snippy_bundles.vba:
line 2:
E492: Not an editor command: UseVimball
Hit ENTER or type command to continue
이런 에러가 떨어지네요 ^^;;
뭐가 잘못된 것인지 ㅎ

근데 해당 사이트를 가도...다운을 받을수가 없네요..
어떻게 다운을 받으신건지~~??