Intro
필자는 Vim을 처음 접했을 때 터미널을 강제 종료한 기억이 있다. 'vi hello.c'로 Vim에 진입을 했는데 문서가 작성이 안 되는 문제가 있었다. 아무 키나 누르다 보니 엉겁결에 문서 수정에는 성공했지만, 그다음 문제는 탈출을 못했었다. 대충 Esc를 눌러 탈출하면 되겠지? 이런 안일한 생각이 꽤 오랜 시간 같은 화면을 보게 만들었다. Vim에는 세 가지 모드가 존재하고 상황에 맞게 사용해야 한다.
3 Modes of Vim
- 명령 모드(Normal Mode)
Vim을 들어가면 수행되는 Default Mode. Vim의 뉴비 절단기이다. 아무리 타이핑해도 글자가 입력되지 않는 마법을 보여주며, 문서 편집 대신 키 입력을 통해 삭제, 복사, 붙이기 등의 작업을 수행할 수 있다.
- 입력 모드(Insert Mode)
입력 모드는 실제로 문서를 편집할 수 있는 모드이다. 다른 일반적인 에디터(Notepad, Notepad++, etc.)들의 Default Mode라고 생각하면 된다. 다시 한번 말하지만 Vim에서 Default Mode는 일반적인 에디터들과 다르다. I, i, A, a, O, o, S, s 중 하나의 명령어를 통해 입력 모드로 들어가야 한다. 이 명령어들에 대한 자세한 설명은 후속 포스트에서 다루겠다.
- ex 모드(Command-line Mode)
라인 에디터인 ex 에디터의 기능을 사용하는 모드이다. 특정 패턴들을 특정 문자열로 대체(한번에 바꾸기) 등 일괄적으로 무언가를 처리할 때 매우 효율적이다. 이외에도 Vim의 설정을 바꾸거나 다른 파일 열기, 그리고 저장 등 다양한 기능을 수행한다. 필자가 고통받은 Vim 탈출, 즉 종료 동작 역시 ex 모드에서 q 명령어를 통해 수행된다.
Vim의 세 가지 모드를 이해하면 Linux 터미널에서 오직 키보드만을 통해 모든 것을 할 수 있게 된다. Visual Mode 라는 모드가 존재하는데 필자는 아직 이 모드를 제대로 접하지 못해 나중에 추가하도록 하겠다. 하나 주의해야 할 점은 그림에서 볼 수 있듯이 명령 모드(Normal Mode)를 통해 다른 모드로 진입한다. 즉, 모드 간 이동은 항상 명령 모드를 거쳐야 한다.
이런 모드를 지칭하는 용어는 적는이에 따라 상이할 수 있다. 그러니 각 모드 간 이동하는 명령어와 정의를 통해 혼동이 없길 바란다.
Next
이번 포스트에서는 키보드 하나로 모든 것을 할 수 있게 해주는 Vim의 기본 개념을 짚었다. 이 글을 읽고 필자와 같이 Vim을 탈출하지 못해 끙끙대는 일이 발생하지 않길 바란다. 이는 Meme으로서도 활용되는데 여러분은 아래 그림과 같은 일을 겪지 않길 바란다. 다음 포스트에서는 각각의 모드에서 사용하는 Command 들을 살펴보겠다.