전에 작성한 PyGoogleChart 관련 글에 hey 님이 댓글을 쓰셨길래 따라가서 블로그 구경을 하다 왔다. 구경을 좀 하다보니 쿵야 어드벤쳐 키맵 for VIM 라는 글을 읽게 되었다. 그런데 HHKP 유저 + VisualStudio에서도 VIM 에뮬레이터를 쓰신다고.
링크된 VIM 에뮬레이터의 홈페이지를 찾아가보니 이런 물건이 나왔다.
ViEmu – from http://www.viemu.com/
그 분이 오셨다! The-One-Editor 를 고르라면 IRC/forum 에서의 몇 손가락 안에 꼽히는 flame-war를 불러일으키는 무언가지만, 내게 궁극의 에디터는 vim인 관계로 첫눈에 반했다! 싶은 물건을 하나 발견하게 되었다.
냉큼 30일 체험판을 다운받아서 VS 2005에서 테스트해보니 잘 돌아간다. VIM에서 내가 즐겨 쓰던 기능들을 하나씩 확인하는 중.1
간략히 — 한 1시간 써본 버젼으로 — 요약해보자면,
편집 기능
vi 편집기에서 가장 기본적인 — 그렇지만 익숙해지면 더 없이 편안하면서도 강력한 — 숫자 + 커맨드 조합 기능이 잘 동작 한다. (그러니까 3줄 복사 = 3yy, 2번 붙이기 2p, 같은 것들) ex/visual mode 변환도 esc / a, A, i, I, o, O 등등 원래 있던 키 조합이 거의 동작한다. (사실 안되는걸 아직 못 찾아서)
Undo/redo 기능 (u / ^r) 도 vi의 느낌 그대로고, :next 하는 식으로 다음 버퍼 대신(…) 열려있는 다른 소스 파일 창으로 이동이 된다 :p
정규 표현식을 사용한 편집 기능도 적어도 내가 쓰는 수준에서는 전부 동작하는 것을 확인했다.
자동 완성
vim에서는 편집 모드에서 ^p, ^n 을 이용해서 자동완성을 시켜준다. (VS 라면 ^j지만) 이 기능도 intelli-sense를 사용해서 구현하고 있고, 링크해놓은 GIF 이미지에서 보이는 것처럼 incremental / highligting search도 지원한다.
심볼 찾아가기
vi에서 ctags 를 이용하면 ^], ^t를 이용한 심볼2 스택 이동을 할 수 있는데 — 특정 심볼의 정의를 찾아가거나, 다시 이전 정의로 돌아가는 식의 stack-like-traversal이 가능 — 이 기능도 inteliense + VS의 심볼 찾기 기능으로 구현한 듯. 그런데로 잘 동작한다.
물론 자주 쓰던 기능 중에 안되는 것도 있긴하다. split 혹은 vsplit (수평 / 수직 분할)된 창을 ^w + 이동키(hjkl)로 이동할 수 있었는데, 그 기능은 없다. (split은 있고 vsplit은 없음) 안타깝게도(…) :help도 없긴하다
외부명령실행
내가 제대로 못한 것인지는 모르겠지만3
:!명령어
형식으로 외부 명령어를 쓸 수 있는 vim의 기능이 없다.4 그래도 :make 로 빌드를 할 수는 있더라.
vim for VS (gvim 확장)과 비교했을 때에는 break point 지정 같이 VS 의 기능을 직접 써야할 때 접근하기가 피곤했었는데, 그런 단점도 없이 대부분의 VS 단축키는 유지된다. (물론 편집 관련 들은 싹 사라지지만…)
폴딩관련
zf, zd, 등을 이용한 일명 접기 — VS에는 들어가있는 것 — 를 vi 의 방식으로 할 수 있게 된다. stania가 이것도 안되었었다고 하는데 수정 된 것 같다.
지원하는 시스템은 VS 2002 ~2008 인 듯하고, 처음 30일간은 무료로 쓸 수 있다. 다만 구매 가격이 79$이긴한데, 지금 눈에 콩깍지가 씌인 rein에게는 "얼마안하네" 로 밖에 안보이는 상태.
편집능력이 작게 잡아서 3배는 올라갈텐데 — 물론 프로그램 개발이 편집만 있는 것은 아니지만 — 이 정도면 회사에서 사달라고 해도 사주지 않을까 하는 중(…).
Windows 를 설치해도 gvim과 command line용 vim을 설치하고, 위키 편집은 w3m으로 들어가서 vim을 띄우거나, Firefox에서 view source with(vim)을 써서 vim가지고 편집하는 rein에게는 이만한 툴이 없는듯하다. 이번 주 초반에 주말동안 맥북 쓰면서 vim에 다시 익숙해진 손가락을 데리고 편집하느라 얼마나 괴로워했던가!
일단 30일은 채워서 써볼 예정이고, 30일 쓰고나면 회사에 사 달라고 조르거나(…), 안되면 자비로라도 구입하지 않을까 싶다 — 뭐랄까 MacBook사고
쉘이 바로뜨네! SSH가 기본으로 깔려있군
이랬던 느낌이랑 좀 유사. (덕분에 MacBook은 bootcamp/parellels없이도 잘 쓰는 중)
동작하지 않는 기능
stania의 제보로 하나 확인. vim에서,
:vmap co :s/^/\/\/<CR>
:vmap uc :s/^\(\/\/\)\?//<CR>
Visual block 전체 주석/주석해제 로 사용하곤하는데, 이ㅍ건 안된다. 일반 모드에서 두 글자 명령을 만들 수가 없다.
- 불행히도 VS는 전통적으로(?) Express Edition에는 플러그인 기능이 없다. 그래서 VS 2003~2008 유료버젼을 사용하는 사용자에게나 의미가 있는 것은 흠이라면 흠 [↩]
- 함수 이름, 변수 이름, class 정의 … 같은 것들 [↩]
- Windows Vista 문제일 수도 있으니 확인은 해봐야겠다 [↩]
- 저기에 filter도 걸고해서 내용으로 가져올 수 도 있는데! [↩]

좋긴한데…다른 사람이 자리와서 쓰려고 하면 상당히 난감해 합니다. ㅎㅎ
커널0 / 그럴 땐 살포시 꺼주기로하고(…), 일단 한 달간은 써보렵니다 ~_~
나도 첫 눈에 반했다! XCode 에도 VI를 달라…
뭐랄까 신간 책을 한 무더기 쌓아놓고 할인가에 판매하는 곳을 발견한 느낌[...]
:e filepath 로 다른 열린 파일도 쉽게 가는데,
:cd %:h 로 현재 작업 디렉토리(일명 CWD)를 바꾸는건 안된다; 흑
…근데 패스가 좀 틀려도, 열려있는 문서는 :e filename 으로 잘 바뀌는듯. 다만 탭기반 완성은 안됨;