수, 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.png

설명에도 나왔듯이 textmate 의 자동 코드 완성 기능을 구현해놓은 플러그인인데요. 여태까지 만들고 써봤던 플러그인들 중에서 가장 textmate 에 근접하게 구현해 놓은 것 같습니다.

설치법은 다음과 같습니다.

먼저 snippetsemu(Google Code) (vim 스크립트 페이지)사이트에서 플러그인을 다운 받습니다.

그 다음 vi 로 snippet_plugin.vba 를 엽니다.

그리고 다음과 같은 커맨드 입력

:so %

그리고 vi를 종료한 후 다시 snippet_bundles.vba 를 여시고 다시 위의 커맨드 입력하면 끝.

정말 쉽죠? ^^

설치를 다 마치신 후에 vi index.php 로 vi 를 재 실행시키고 if 를 친 후 tab 을 쳐 봅시다!

macvim.png

오옷!! 완벽하군요! ^ㅁ^b

저는 macvim 을 사용하고 있는데, 위의 두 플러그인과 더불어 이곳에서 맘에 드는 컬러 테마를 선택해 적용해 주고, 몇가지 매크로와 설정들을 적용하고 나면 textmate 가 절대 부럽지 않습니다. ^^ 특히나 macvim 은 vi 의 강력하고 빠른 편집기능과 함께 한글도 잘 나올뿐더러, scp 를 통해 원격의 파일들도 쉽게 편집할 수 있으니 이 얼마나 아름다운 세상인가요~(응?;; ) ㅎㅎㅎ

게다가 공짜!!!

해피 해킹하세요~ :-D

+ snippetsemu 과 autocomplpop 을 같이 쓰실 경우 제가 쓴 가이드에 따라 autocomplpop 를 설치하셨었다면, tab 키가 중복되지 않도록 .vimrc 에 넣으셨던 tab 설정 부분은 빼 주셔야 snippetsemu 가 정상작동합니다.

tags :


삭제 수정 답글
2008.10.08 16:37:56 (*.241.147.22)
김문걸
와우..멋지네요..
근데 해당 사이트를 가도...다운을 받을수가 없네요..
어떻게 다운을 받으신건지~~??
답글
2008.10.08 18:55:58 (*.91.6.186)
골빈해커
아.. 그러게요.. 어케 다운 받았을까요..-_-;;
http://www.vim.org/scripts/script.php?script_id=1318
여기서 다운 받으실 수 있습니다.

snippy_plugin.vba 과 snippy_bundles.vba 만 최신 버전으로 받으시면 됩니다. ^^
삭제 수정 답글
2008.10.08 22:32:38 (*.48.87.247)
헐 테마 정말 많네요 스크롤 압박이....;;
답글
2008.10.08 22:55:05 (*.91.6.186)
골빈해커
찾아보시면 이보다 더 많은 테마들이 있죠. 새로 만들 필요가 거의 없답니다. 흐.. :-)
삭제 수정 답글
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


이런 에러가 떨어지네요 ^^;;
뭐가 잘못된 것인지 ㅎ
삭제 수정 답글
2008.10.09 14:01:37 (*.121.160.74)
vim 이 7.1 미만일 경우 vimball 스크립트를 깔아주셔야 합니다. 아래를 참고하세요. ^^
http://vim.sourceforge.net/scripts/script.php?script_id=1502
삭제 수정 답글
2008.10.10 09:50:41 (*.241.147.22)
MOON
덕분에 잘 다운받아서 설치는 했는데...
tab 을 눌러도..안되네요..
그냥 옆으로 tab 크기만큼 이동만 하네요..
제가 뭘 잘못한 걸까요?
윈도운 버젼만 된느건 아니죠?
전 현재 unix 서버에 telnet으로 접속해서 사용중입니다. 버젼은 7.1...
왜 안될까요..쩝...
삭제 수정 답글
2008.10.10 10:16:56 (*.121.160.74)
vim의 장점 중 하나는 대부분의 플러그인을 어느 플랫폼이든 똑같이 적용할 수 있다는거죠. ^^ 이 플러그인도 마찬가지구요. 저는 맥과 리눅스에서 사용하고 있습니다. 설치가 잘못되었다거나, tab 설정이 다른 곳에 쓰여서 키가 안먹는건지 모르겠습니다. 제가 최근 글에 제 .gvimrc 를 올려놓았으니 참고해서 설정해보세요. 그래도 안되면 저도 잘..^^;;