ViEmu: First Impression

전에 작성한 PyGoogleChart 관련 글에 hey 님이 댓글을 쓰셨길래 따라가서 블로그 구경을 하다 왔다. 구경을 좀 하다보니 쿵야 어드벤쳐 키맵  for VIM 라는 글을 읽게 되었다. 그런데 HHKP 유저 + VisualStudio에서도 VIM 에뮬레이터를 쓰신다고.

링크된 VIM 에뮬레이터의 홈페이지를 찾아가보니 이런 물건이 나왔다.

viemu-movie

ViEmu – from http://www.viemu.com/

그 분이 오셨다!  The-One-Editor 를 고르라면 IRC/forum 에서의 몇 손가락 안에 꼽히는 flame-war를 불러일으키는 무언가지만,  내게 궁극의 에디터는 vim인 관계로 첫눈에 반했다! 싶은 물건을 하나 발견하게 되었다.

냉큼 30일 체험판을 다운받아서 VS 2005에서 테스트해보니 잘 돌아간다. VIM에서 내가 즐겨 쓰던 기능들을 하나씩 확인하는 중. ((불행히도 VS는 전통적으로(?) Express Edition에는 플러그인 기능이 없다. 그래서 VS 2003~2008 유료버젼을 사용하는 사용자에게나 의미가 있는 것은 흠이라면 흠))

간략히 — 한 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를 이용한 심볼 ((함수 이름, 변수 이름, class 정의 … 같은 것들)) 스택 이동을 할 수 있는데 — 특정 심볼의 정의를 찾아가거나, 다시 이전 정의로 돌아가는 식의 stack-like-traversal이 가능 — 이 기능도 inteliense + VS의 심볼 찾기 기능으로 구현한 듯. 그런데로 잘 동작한다.

물론 자주 쓰던 기능 중에 안되는 것도 있긴하다. split 혹은 vsplit (수평 / 수직 분할)된 창을 ^w + 이동키(hjkl)로 이동할 수 있었는데, 그 기능은 없다. (split은 있고 vsplit은 없음) 안타깝게도(…) :help도 없긴하다 :)

외부명령실행

내가 제대로 못한 것인지는 모르겠지만 ((Windows Vista 문제일 수도 있으니 확인은 해봐야겠다))

:!명령어

형식으로 외부 명령어를 쓸 수 있는 vim의 기능이 없다. ((저기에 filter도 걸고해서 내용으로 가져올 수 도 있는데!)) 그래도 :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 전체 주석/주석해제 로 사용하곤하는데, 이ㅍ건 안된다. 일반 모드에서 두 글자 명령을 만들 수가 없다.

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

9 Comments

  1. :e filepath 로 다른 열린 파일도 쉽게 가는데,
    :cd %:h 로 현재 작업 디렉토리(일명 CWD)를 바꾸는건 안된다; 흑

    …근데 패스가 좀 틀려도, 열려있는 문서는 :e filename 으로 잘 바뀌는듯. 다만 탭기반 완성은 안됨;

  2. :set number를 사용할 수는 없나요?
    정규식 사용하실 때 앞에 줄이 없어서 불편하지 않나요??
    줄 이동할 때도 5G는 그냥 눈으로 보이니까 빨리 할 수 있지만, 50G같은 경우에는 잘 모르잖아요.
    그리고 .vimrc 파일이 어디있는지 아시나요?
    결국 찾다 찾은 것이 win7경우 appdata 안에 있는 거던데…vimrc는 없던데요..
    어디에서 설정을 해놓으시나요?

    만약에 포맷을 할 상황이 되면 설정해 놓은 파일이 다 날라가잖아요.
    이 설정파일의 위치를 알고 싶어요..
    제가 확신을 할 수 있는건..
    VS2010 쓰시는 분 중에서 앞에 번호 붙여서 사용하신 분을 스샷으로 봤네요..

    • 설정 파일을 까보는게 윈도우즈 재 설치할 때 뿐인데다가, 집에는 서리하지 않고있어서(…) 일단 기억에 남은대로만 답변 드립니다.

      :set number가 되는지는 모르겠습니다. 그렇지만 어차피 VS2010에서 지원하니 차이는 없을 겁니다.
      .vimrc는 vim용을 말씀하시는건지, 아니면 viemu 용을 말씀하시는지 모르겠지만, 후자라고 생각하고 말하자면, viemu 설치 디렉터리 안에 별도로 생성됩니다. vim과는 정말 별개의 프로그램인지라…
      그리고 Windwos 7 + (일반) vim이라면 /users/user-name/ 밑에 생기던 걸로 기억합니다…

      • 아…찾았네요.
        Tools|Options|Environment|Text Editor의 Line number에 체크해주면 되더군요..
        역시 이런 기본적인건 모든 Editor에서 지원해 주는군요..

        답변 감사합니다.
        음..
        viemurc는 못 찾았습니다.
        개인적으로 세팅을 해놓고 포맷을 대비하고 싶은데..
        검색해봐도 안 나오네요.

        C드라이브 밑에 있는 파일을 모두 검색해 봤지만 안 나옵니다. ㅠㅠ
        dir /s /ah *viemurc*

        • 회사와서 하드 디스크 검색해보니 viemurc는 이전 버전 — VS 2008이전과 VS 2010 이후 플러그인 구조가 완전히 달라서 — 에서는 _viemurc란걸 만들던데, 2010부터는 없어진듯 합니다.
          (아마도) VS 설정 파일에 같이 저장되는게 아닐까 싶지만 잘 모르겠네요 -_-;

Leave a Reply