[VIM] 더 효율적인 프로그래머가 되자!
기타

[VIM] 더 효율적인 프로그래머가 되자!

VIM으로 효율적인 프로그래머가 될 수 있을까?

VIM이란?

VIM은 VI라는 소프트웨어의 강화 버전이라고 생각하시면 되는데, 결국 키보드로 문서 편집을 한다는 뜻입니다.
처음 VI가 등장하게 된 배경은 마우스가 없거나 지원되지 않던 시절 키보드를 통해서만 작업을 해야 했던 프로그래머들이 더 나은 UX를 위해 만들었으며 지금도 UNIX 계열 OS(리눅스, 맥)에서는 기본적으로 깔려서 옵니다.

VIM의 단점

이런 밈이 있을 정도로 VIM은 진입장벽이 매우 큽니다.(VIM에서 저장하지 않고 나가려면 :q를 누르시면 됩니다.)
저도 한 3번 포기했다가 이번에 드디어 손에 익어서 사용하게 되었는데 진짜 생각보다 너무 편하고 좋더라고요.
근데 이 벽만 한 번 넘으면 그다음부터는...
더 많은 것들이 기다립니다.
아무래도 한정된 키들을 가지고 다양한 일들을 하려고 하니 살짝 복잡해지는데 사실 커맨드 몇 개만 알아 둬도 능률이 확 올라갑니다.

VIM의 장점

아마 대부분의 분들이 IDE나 텍스트 에디터를 사용할 것이라고 생각됩니다.
파이참, VSC, CodeBlocks 같은 것들 말이죠.
이런 에디터들은 키보드 단축키가 존재하고 이 단축키들을 많이 알아두면 인생이 편리해진다는 것은 다 아실 겁니다.
VIM은 여기서 하나 더 나아가서 마우스에 손을 대지 않고 파일에서 커서를 움직이고, 줄을 선택하고, 지우고, 되돌리고, 단어 교체하고 등등 다양한 것을 하게 해 줍니다.
즉 마우스로 왔다 갔다 하는 시간을 아예 없애버릴 수 있다는 뜻이죠.
실제로 전 데탑 없이 맥북으로 개발하고 다 하는데 기본적으로도 글 선택하는 것 아니면 마우스를 잘 쓰지 않았는데 VIM을 쓰기 시작하고부터는 거의 손이 키보드를 떠나질 않게 되더라고요.

VIM 쓰는 법

VIM은 기본적으로는 콘솔 창에서 쓰이도록 개발되었지만 실제로 콘솔 창에서 작업하는 것은 어느 정도 불편함이 따르기 때문에 NeoVim 같은 VIM 전용 IDE를 쓰거나 VSC 같은 에디터에 VIM 확장팩을 설치해서 쓰는 것이 더 일반적입니다. (저도 VSC에서 쓰고 있습니다)

VIM 배우기

VIM은 배울 양이 꽤 큰 편이라 제대로 배우려면 적지 않은 시간이 걸릴 텐데요, 이 글에서는 간단히 자주 쓰일만한 커맨드만 소개하고 추가적인 기능은 직접 찾아보시는 것을 추천드립니다.

커서 이동하기

기본적으로 VIM에서는 h, j, k, l을 통해 각각 상, 하, 좌, 우로 이동하며 gg를 통해 글 맨 위로, G를 통해 글 맨 아래로 움직입니다.
0을 통해 해당 줄의 맨 앞으로 갈 수 있고 $를 통해 해당 줄의 맨 끝으로 갈 수 있습니다.
w를 통해 다음 단어의 첫 글자로, e를 통해 다음 단어의 맨 뒷글자로, b를 통해 이전 글자로 이동할 수 있습니다.
t에 찾고 싶은 글자를 입력하면 커서 뒤의 글 중 가장 가까운 곳 바로 앞으로 커서를 이동하며 f에 찾고 싶은 글자를 입력하면 커서 뒤의 글 중 가장 가까운 곳으로 커서를 이동시킵니다.
TF는 소문자 형태와 유사한데 뒤가 아닌 앞에서 찾는다는 차이점이 있습니다.

글 쓰고 지우기

아마 VIM을 처음 접하시면 가장 당황스러운 게 키가 안 먹히는 것 같다는 느낄 일 텐데요, 이는 VIM이 노멀 모드, 간단히 커맨드 모드에 있어서 그렇습니다.
글을 입력하기 위해서는 인서트 모드에 들어가야 하는데 이를 위해 i를 누르시면 입력이 정상적으로 들어갑니다.
i는 커서의 앞에서 입력을 시작하고 a는 커서의 뒤에 입력을 시작합니다.
I를 통해 맨 앞의 텍스트에서 입력을 시작할 수 있고 A를 통해 맨 뒤의 텍스트에서 입력을 시작할 수 있습니다.
ESC 키를 통해 다시 커맨드 모드로 돌아갈 수 있습니다.
지우기 기능은 d를 통해서 사용할 수 있습니다.
물론 d하나만 가지고 하는 것은 아니고 숫자, w, e, b, t, f, T, F 등과 결합하여 원하는 형태로 지울 수 있습니다.
예를 들어 괄호 안의 글을 모두 지우고 싶다면 'dt)'를 통해 할 수 있으며 단어 2개를 지우고 싶으시면 'd2w'를 통해 하실 수 있습니다.

글 저장하고 나가기

:w를 통해 글을 저장할 수 있고 :q를 통해 나갈 수(닫을 수) 있습니다.
:wq를 하면 저장하고 닫을 수 있고요.
:q! 를 통해 모든 것을 무시하고 나갈 수도 있습니다.

단어 교체하기

:s/교체될 단어/교체할 단어를 통해 현재 커서 뒤에 있는 가장 가까운 단어를 교체할 수 있습니다.
뒤에 /g를 붙여 해당 줄에서 전부 교체할 수 있고 앞의 s를 %s로 교체하고 /g를 붙여 글 전체에서 교체할 수 있습니다.

글쓴이의 생각

VIM을 전부 배우려 하기보다는 필요한 기능들 위주로 배워나가도 충분히 처리 속도가 빨라진 것을 느끼실 수 있을 것 같습니다.
이건 타자연습처럼 꾸준히 하지 않으면 처음에는 오히려 평소보다 느려져서 답답하실 수 있는데 그래도 계속하시면 어느 순간 '아, 난 지금까지 손해보고 살았구나!'를 느끼시게 될 겁니다.

  • 지금 티스토리가 마크다운 에디터가 한글 입력이 제대로 안 먹히고 VSC도 한글이 씹혀서 옵시디언이라는https://obsidian.md 마크다운 노트 앱을 쓰고 있는데 VIM을 지원해서 너무 좋습니다 진짜

캡스락 키를 잘 사용하지 않으시는 분들은 캡스락을 ESC로 키 바인딩을 해서 쓰시거나 jk를 ESC로 바꾸시는 것을 추천드립니다.
*VSC에서 jk 바인딩하기:

"vim.insertModeKeyBindings": [
        {
            "before": ["j", "k"],
            "after": ["<Esc>"]
        }
    ],