개발자라면 누구나 자신이 주로 사용하는 에디터가 있다. 여기에는 간단한 편집 기능만 제공하는 것부터 디버깅, 버전 관리, 유닛 테스트, 리팩토링까지 지원하는 IDE까지 다양한 종류가 존재한다. 각자의 취향과 손에 익숙함에 따라 좋아하고 편리한 것이 있을 것이다.

내 경우는 vim(vi)를 주로 사용한다. 이클립스와 PhpStorm을 써보려고 노력 해 봤지만, vim만큼 편리하고 적응력이 좋다고 느끼지 못해 번번히 다시 vim으로 돌아오곤 했다. 만약 누가 프로그래밍을 처음 배우던 때로 돌아가 에디터를 새로 배워야 한다면 어떤 것을 선택 할 것이냐 물어도 다시 vim을 선택 할 것 같다.

vim을 좋아하는데는 여러가지 이유가 있지만, 그 중 하나를 꼽자면 가장 프로그래밍(?)스러운 에디터라는 점이다. 프로그래밍은 간단한 연산, 분기 등을 제공하는 키워드를 조합해서 복잡한 기능을 만들내는 과정이다. 보통의 에디터들은 이런 기능 하나마다 별도의 단축키가 지정되어 있다. 예를 들어 커서 위치부터 줄의 맨 앞까지, 커서 위치부터 줄의 맨 뒤까지, 아니면 줄 전체를 지우는 기능에 각각의 단축키가 할당되어 있다.

하지만 vim은 삭제(d), 그리고 범위를 지정함으로서 수 많은 범위 종류의 삭제에 다 대응을 하고 있다. 커서가 위치한 태그 속 내용을 삭제하고 싶은가? 그렇다면 dit(delete, inner, tag)를 입력하면 된다. vim의 단축키는 이렇게 구성되어 있고, 그 조합은 방대하다. 그렇기 때문에 vim은 사용하는 사람의 실력에 따라 완전히 다른 에디터처럼 보이기도 한다. 많은 에디터들이 어느 정도 능숙해지면 효율의 향상에 한계를 보이는데 비해 vim은 이런 점에서 좀 더 장점이 있다 할 수 있겠다.

다만 vim은 다른 에디터와는 이질적인 방식(명령/입력 모드) 때문에 초기 진입 장벽이 높다는 점이다. 이 허들만 넘어선다면 나머지는 천천히 실력을 키워도 되는 문제라 본다. 꼭 고수처럼 쓰지 못 하더라도 vim은 배워 둘 가치가 있는 에디터라고 생각한다. 이 글을 쓰는 시점에서 나도 초보에서 벗어난 수준이지만, 그 정도만으로도 vim를 통해서 프로그래밍 할 때 많은 도움을 받고 있다.

만약 프로그래밍을 새로 공부하려는 사람이라면 처음부터 vim으로 시작 해 보길 추천하고 싶다. 배워두기만 하면 본전 생각은 절대 나지 않을테니 말이다.