서버에서 vi 가 열렸을 때
crontab -e 나 git 커밋 메시지에서 vi 가 뜨면 당황하기 쉽습니다. i, Esc, :wq 와 :q! 부터 미리 손에 익혀 둡니다.
도구 / vim 연습기
모드·연산자·이동·텍스트 오브젝트·되풀이(.)가 실제 vim 의 규칙대로 동작합니다.
화면 구성도 같습니다 — 왼쪽 줄번호, 파일 끝을 알리는 ~ 줄, 아래쪽 상태줄과 명령줄,
그리고 입력 중인 명령을 오른쪽에 보여 주는 showcmd 까지 그대로 둡니다.
cw가 dw와 다르게 낱말 뒤 공백을 남기는 vim 의 유명한 예외도 그대로 구현했습니다.
:q는 저장하지 않았으면 E37로 거절하고, 없는 명령에는 E492를 냅니다.
지원하지 않는 것은 되는 척하지 않습니다. 매크로(q), 이름 있는 레지스터,
마크, 폴드, 창 분할, 정규식 검색은 이 연습기에 없습니다. 지원하지 않는 키를 누르면 화면 아래에
그렇다고 알려 줍니다. :help limits 에 목록이 있습니다.
명령 92개 · 과제 50건 ·
입력 내용은 서버로 전송되지 않으며 :w는 실제 파일을 쓰지 않습니다.
됩니다. 화면이 좁으면 단축키 패널이 아래로 내려가고, 물리 키보드가 없는 기기에는
화면 아래에 vim 키 패드가 나타납니다. Esc hjkl dcy
: / 를 눌러 그대로 연습할 수 있습니다.
다만 vim 은 본래 물리 키보드를 전제로 만든 편집기입니다. 손에 익히는 목적이라면 키보드가 있는 환경에서 연습하는 편이 훨씬 빠릅니다. 모바일은 "이동 중에 명령을 확인하고 한두 과제를 풀어 보는" 용도로 생각해 주세요.
vim 에서 나가는 방법을 상황별로 정리했습니다. 저장하고 나가기, 저장 없이 나가기, 읽기 전용 파일 강제 저장, E37 오류 대처까지 실제 동작 기준으로 설명합니다.
vim 이 모드를 쓰는 이유와 네 가지 모드의 차이, 모드 사이를 오가는 키를 정리했습니다. 모드를 이해하면 vim 의 나머지는 전부 이 위에 얹힙니다.
hjkl 부터 w b e f t % gg G 까지, vim 이동 명령을 쓰는 순서대로 정리했습니다. 이동은 그 자체로도 쓰고 연산자 뒤에 붙여 범위로도 씁니다.
vim 편집의 문법은 [개수][연산자][개수][이동] 하나입니다. dw cw yy D C 를 외우는 대신 조합 규칙을 이해하는 방법을 설명합니다.
커서를 정확한 자리에 두지 않아도 편집할 수 있게 해 주는 텍스트 오브젝트를 정리했습니다. 실무에서 가장 많이 쓰는 vim 기능입니다.
vim 검색 이동과 :s 치환 문법을 플래그와 범위까지 정리했습니다. 확인하며 치환하는 c 플래그, 대소문자 무시 옵션도 다룹니다.
vim 을 설치하고 처음 만드는 .vimrc 에 넣을 설정을 이유와 함께 정리했습니다. 줄번호, 검색 옵션, 들여쓰기, 클립보드까지.
MADE FOR YOUR WORK
crontab -e 나 git 커밋 메시지에서 vi 가 뜨면 당황하기 쉽습니다. i, Esc, :wq 와 :q! 부터 미리 손에 익혀 둡니다.
IntelliJ IdeaVim, VS Code Vim 처럼 vim 키를 쓰는 환경으로 옮기기 전에 이동과 연산자 문법을 연습합니다.
cw 와 dw 의 차이, ci" 와 da" 의 차이처럼 헷갈리는 명령을 목록에서 눌러 결과를 눈으로 확인합니다.
STEP BY STEP
이렇게 쓰세요
왼쪽 패널의 단축키 탭에서 명령을 누르거나, 과제 탭에서 코스의 과제를 고릅니다. 검색 칸에 dw 나 '낱말'처럼 입력해 찾을 수도 있습니다.
가운데 편집 창을 누른 뒤 키를 칩니다. 이동은 hjkl 로 하며 방향키는 받지 않습니다.
편집 결과가 오른쪽 목표 상태와 같아지면 통과입니다. 과제마다 적힌 예시 풀이 타수와 비교해 더 짧은 방법을 찾아 보세요.
힌트 보기를 펼치거나 :help 를 입력해 도움말을 엽니다. 다시 버튼을 누르면 과제가 처음 상태로 돌아갑니다.
UNDERSTAND THE BASICS
vim 은 모드에 따라 같은 키의 뜻이 달라집니다. 노멀 모드에서는 키가 명령이고, i 나 a 로 입력 모드에 들어가야 글자가 들어갑니다. Esc 를 누르면 다시 노멀 모드로 돌아옵니다.
편집 명령 대부분은 연산자 뒤에 이동을 붙인 조합입니다. d 는 지우기, c 는 바꾸기, y 는 복사이고 w 는 다음 낱말, $ 는 줄 끝입니다. 그래서 dw 는 낱말 지우기, c$ 는 줄 끝까지 바꾸기, y$ 는 줄 끝까지 복사가 됩니다. 앞에 숫자를 붙이면 d2w 처럼 여러 번 반복합니다.
텍스트 오브젝트는 커서를 정확히 두지 않아도 되는 대상입니다. iw 는 커서가 놓인 낱말, i" 는 따옴표 안쪽, a( 는 괄호까지 포함한 범위라서 ciw, ci", da( 처럼 씁니다. 마지막 변경은 . 으로 되풀이하고 u 로 되돌립니다.
이 연습기는 모드, 연산자, 이동, 텍스트 오브젝트, 되풀이를 vim 규칙대로 구현했지만 매크로, 이름 있는 레지스터, 마크, 폴드, 창 분할, 정규식 검색은 지원하지 않습니다. 검색은 입력한 글자를 그대로 찾습니다.
| 명령 | 뜻 |
|---|---|
| i · a · o | 커서 앞·뒤·아랫줄에서 입력 시작 |
| h j k l | 왼쪽·아래·위·오른쪽 이동 |
| w · b · e | 다음 낱말 시작·이전 낱말 시작·낱말 끝 |
| dw · dd | 낱말 지우기 · 줄 지우기 |
| ciw | 커서가 놓인 낱말 바꾸기 |
| yy · p | 줄 복사 · 붙여넣기 |
| u · . | 되돌리기 · 마지막 변경 되풀이 |
| :%s/a/b/g | 파일 전체에서 a 를 b 로 치환 |
| :wq · :q! | 저장하고 종료 · 저장하지 않고 종료 |
실제 vim 화면에서 명령을 눌러 가며 익히는 연습기입니다. 왼쪽 단축키 목록을 누르면 그 명령만 쓰는 연습이 바로 시작되고, :help 와 : 명령줄까지 동작합니다.
왼쪽에서 단축키나 과제를 고르고 가운데 편집 창을 눌러 키를 입력하세요. 오른쪽의 목표 상태와 같아지면 통과입니다. 막히면 :help 를 치거나 힌트를 펼쳐 보세요. 물리 키보드가 없으면 화면 아래 키 패드를 쓸 수 있습니다.
QUICK EXAMPLE
노멀 모드에서 dw
현재 위치에서 단어 삭제 연습
학습용 구현이므로 실제 Vim의 모든 플러그인과 명령을 지원하지 않습니다.
브라우저에서 도는 vim 에뮬레이터입니다. 모드·연산자·이동·텍스트 오브젝트·되풀이(.)가 실제 vim 의 규칙대로 동작하며, cw 가 dw 와 달리 낱말 뒤 공백을 남기는 예외까지 구현했습니다.
치트시트에 적은 키는 전부 실제로 동작합니다. 각 항목에 연습용 키 순서가 함께 들어 있고, 자동 테스트가 그 순서를 엔진에 먹여 목표 상태가 나오는지 검증합니다. 그래서 '적어 두고 안 되는 키'가 생기지 않습니다.
지원하지 않는 키는 먹은 척하지 않고 화면 아래에 그렇다고 알립니다. 매크로·이름 있는 레지스터·마크·폴드·창 분할·정규식 검색은 일부러 넣지 않았고 :help limits 에 목록이 있습니다.
연습 버퍼는 브라우저 메모리에만 있고 서버로 전송되지 않습니다. :w 는 실제 파일을 쓰지 않으며 상태줄의 [+] 표시만 지웁니다. 과제 진행 상황은 이 브라우저에만 저장됩니다.
BEFORE YOU FINISH
글자가 그대로 들어가면 아직 입력 모드입니다. Esc 로 노멀 모드로 돌아온 뒤 명령을 치세요.
이 연습기는 방향키를 받지 않습니다. hjkl 과 w, b, f{글자} 같은 이동에 익숙해져야 연산자와 조합할 수 있습니다.
dw 는 낱말 뒤 공백까지 지우지만 cw 는 공백을 남기고 낱말만 바꿉니다. vim 의 유명한 예외이며 이 연습기도 그대로 동작합니다.
노멀 모드에서 :q! 를 입력합니다. 저장하지 않은 변경이 있을 때 :q 만 치면 E37 오류로 거절합니다. 저장하고 나가려면 :wq 입니다.
됩니다. 물리 키보드가 없으면 화면 아래에 Esc, hjkl, d, c, y, :, / 같은 키가 있는 vim 키 패드가 나타납니다. 다만 손에 익히려면 키보드가 있는 환경이 훨씬 빠릅니다.
아닙니다. 연습 버퍼는 브라우저 메모리에만 있고 :w 는 실제 파일을 쓰지 않습니다. 과제를 푼 기록만 이 브라우저에 남습니다.
지원하지 않습니다. 매크로, 이름 있는 레지스터, 마크, 폴드, 창 분할, 정규식 검색은 이 연습기에 없고, 지원하지 않는 키를 누르면 화면 아래에 알려 줍니다. :help limits 에 목록이 있습니다.
vimtutor 는 터미널에서 문서를 읽으며 따라 하는 공식 연습입니다. 이 연습기는 설치 없이 브라우저에서 명령을 골라 바로 연습하고, 과제마다 목표 상태와 예시 풀이 타수로 결과를 확인합니다.
연습 버퍼는 브라우저 메모리에만 있고 :w 도 실제 파일을 쓰지 않습니다. 입력한 키와 내용은 서버로 보내지 않으며, 푼 과제 표시만 이 브라우저에 남습니다.