Vim 에디터(Vi Improved) 빠른 안내서
Vim이 무엇이고 왜 쓰나
Vim은 터미널에서 강력하게 동작하는 텍스트 에디터로, Vi를 확장한 "Vi Improved"이다. 마우스 없이 키보드 중심으로 빠르게 편집하고, 원격 서버(SSH)에서도 가볍게 쓸 수 있으며, 플러그인과 설정으로 개발 환경까지 확장할 수 있다. 처음엔 낯설지만, 손에 익으면 "이동-편집-반복"이 매우 빨라진다.
nano와 Vim의 차이
nano는 실행하자마자 바로 입력하는 방식(모델리스에 가까움)으로, 단순 편집을 빠르게 끝내는 데 초점이 맞춰져 있다. 화면 하단에 ^X 같은 단축키 안내가 계속 보이고, 여기서 ^는 Ctrl을 뜻한다.
Vim은 노멀/인서트/비주얼/커맨드라인 모드를 오가며 "명령으로 편집"하는 철학이다. 초반 진입장벽은 있지만, operator + motion(예: d+w, c+i) 같은 조합으로 범위를 정교하게 다루고 . 반복, 매크로(q), 레지스터, 텍스트 오브젝트로 반복 작업을 빠르게 처리한다. 검색/치환도 nano가 기본 기능을 갖추긴 했지만, Vim은 :%s/.../.../gc 같은 전역 치환, 정규식, 범위 지정(줄/블록/파일 전역)에서 강하다.
커스터마이즈 관점에서 nano는 설정이 비교적 단순한 편이고, Vim은 .vimrc와 플러그인 생태계로 IDE처럼 확장할 수 있다(LSP, 파일 트리, Git 연동 등). 둘 다 터미널에서 가볍고 SSH 환경에서 유용하지만, 서버 기본 탑재는 배포판마다 다르며 전통적으로 vi/vim이 있는 환경이 많아 "어딜 가도 있는 편집기"로 쓰이기도 한다.
급하게 설정 파일을 한두 줄만 고치고 나올 때, 또는 Vim 단축키가 아직 익숙하지 않아 실수 위험이 클 때는 nano가 편하다. 코드/문서에서 동일 패턴을 여러 곳 고치거나 범위 편집·치환을 자주 하고, ciw, f{문자}, . 같은 키보드 중심 워크플로가 필요하면 Vim이 유리하다.
nano는 쉽게 시작하는 편집기, Vim은 익숙해질수록 강해지는 편집기.
핵심 개념: 모드 기반 편집
Vim은 같은 키라도 "모드"에 따라 의미가 달라진다. 기본은 노멀(Normal) 모드이며, 여기서는 글자를 입력하지 않고 이동/편집 명령을 내린다. 입력은 인서트(Insert) 모드에서 한다. 선택은 비주얼(Visual) 모드에서 한다. 명령 입력은 커맨드라인(Command-line) 모드에서 :로 시작한다. 헷갈리면 일단 Esc를 눌러 노멀 모드로 돌아가는 습관이 가장 중요하다.
실행, 저장, 종료
터미널에서 vim 파일명으로 연다. 열어둔 파일이 없으면 vim만 입력해도 된다.
저장은 :w, 종료는 :q가 기본이다. 저장하고 종료는 :wq 또는 ZZ(노멀 모드). 저장 없이 강제 종료는 :q!이다. 변경 사항이 있는데 그냥 나가려 하면 Vim이 막으므로, 그때 :wq 또는 :q!를 선택하면 된다.
이동 기본(노멀 모드)
기본 이동은 h j k l(왼/아래/위/오른쪽)이다. 줄 단위 이동은 0(줄 처음), ^(공백 제외 처음), $(줄 끝). 화면 단위는 Ctrl-f(다음 화면), Ctrl-b(이전 화면).
단어 단위는 w(다음 단어 시작), e(단어 끝), b(이전 단어 시작). 문서 단위는 gg(맨 위), G(맨 아래), :{숫자}로 특정 줄로 이동한다(예: :42).
입력(인서트) 시작 키
노멀 모드에서 인서트 모드로 들어가는 대표 키만 외워도 충분하다. i(커서 앞에 입력), a(커서 뒤에 입력), o(아래에 새 줄), O(위에 새 줄). 입력을 마치면 Esc로 노멀 모드로 돌아온다.
삭제/변경(편집의 기본 문법)
Vim 편집은 "동작(오퍼레이터) + 범위(모션)" 조합이 핵심이다. 예를 들어 dw는 "단어 끝까지 삭제", d$는 "줄 끝까지 삭제"처럼 읽힌다.
자주 쓰는 삭제는 x(한 글자 삭제), dd(한 줄 삭제), dw(단어 삭제), d0(줄 처음까지 삭제), D(커서부터 줄 끝까지 삭제, 즉 d$). 변경은 c 계열로, cw(단어 바꾸기), cc(줄 전체 바꾸기), C(커서부터 줄 끝까지 바꾸기). 바꾸기는 삭제 후 자동으로 인서트 모드로 들어간다.
복사/붙여넣기(얀크/풋)
Vim에서는 복사를 "yank", 붙여넣기를 "put"이라 부른다. yy는 한 줄 복사, yw는 단어 복사. 붙여넣기는 p(커서 뒤/아래에 붙여넣기), P(커서 앞/위에 붙여넣기)다.
삭제(d)도 사실상 "잘라내기"처럼 동작해, dd로 지운 줄을 바로 p로 붙여넣을 수 있다. 즉 "삭제=잘라내기+레지스터 저장"이라는 감각을 가지면 편하다.
실행 취소/재실행, 반복
실수했을 때는 u(실행 취소). 되돌린 것을 다시 적용하는 재실행은 Ctrl-r이다. 직전 변경을 반복하는 .는 생산성을 크게 올려준다. 예를 들어 dw를 한 번 한 뒤, 다음 단어에서도 .를 눌러 같은 삭제를 반복한다.
검색과 치환
검색은 /검색어 후 Enter, 다음/이전 결과는 n/N이다. 현재 커서 아래 단어를 빠르게 찾는 *(정방향), #(역방향)도 유용하다.
치환은 :%s/원본/대상/g가 기본 형태다. 현재 줄만 바꾸려면 :s/원본/대상/, 확인하며 바꾸려면 끝에 c를 붙여 :%s/원본/대상/gc를 쓴다.
비주얼 모드(선택해서 편집)
선택이 필요하면 비주얼 모드로 들어간다. v는 글자 단위, V는 줄 단위, Ctrl-v는 블록(열) 단위 선택이다. 선택 후 d로 삭제, y로 복사, c로 변경, >/<로 들여쓰기 조정이 가능하다.
블록 선택(Ctrl-v)은 여러 줄의 같은 열에 동시에 수정할 때 좋다. 예를 들어 블록으로 여러 줄 앞을 잡고 I로 삽입 후 입력하고 Esc를 누르면 여러 줄에 동시에 반영된다.
버퍼/윈도우/탭 감각 잡기
Vim에는 "파일 단위의 버퍼", "화면 분할 단위의 윈도우", "윈도우 묶음인 탭"이 있다. 초보는 일단 윈도우 분할과 버퍼 전환만 익혀도 충분하다.
버퍼는 :e 다른파일로 열고, :ls로 목록을 본다. 이동은 :bnext/:bprev(또는 :bn/:bp), 번호로는 :b 3처럼 간다.
윈도우 분할은 :split(가로), :vsplit(세로). 윈도우 이동은 Ctrl-w h/j/k/l이 기본이다. 닫기는 :q(해당 윈도우만) 또는 :only(현재만 남기고 나머지 닫기).
탭은 :tabnew, 탭 이동은 gt(다음), gT(이전) 정도만 알아두면 된다. 많은 사용자는 탭보다 버퍼+윈도우 중심으로 쓴다.
설정(vimrc) 최소 세트
개인 설정은 ~/.vimrc(Windows는 보통 $HOME_vimrc)에 넣는다. 처음엔 "검색 하이라이트/줄 번호/들여쓰기" 같은 체감 큰 것만 두는 게 좋다.
예를 들어 아래 정도는 무난하다.
set number
set relativenumber
set hlsearch
set incsearch
set ignorecase
set smartcase
set expandtab
set shiftwidth=2
set tabstop=2
set clipboard=unnamedplusclipboard=unnamedplus는 OS 클립보드와 연동을 노리는 설정인데, 환경에 따라 동작이 다를 수 있다. 안 되면 일단 빼고, 나중에 자신의 OS/터미널 조합에 맞춰 조정한다.
추천 학습 방법(초보 루트)
가장 좋은 시작은 vimtutor를 그대로 따라 하는 것이다. "모드 전환 → 이동 → 삭제/변경 → 복사/붙여넣기 → 검색/치환" 순서로 몸에 붙인다.
그 다음엔 자주 쓰는 흐름을 한 세트로 연습한다. 예를 들어 "단어로 이동(w) → 단어 변경(cw) → 반복(.)", "검색(/) → 다음(n) → 줄 삭제(dd)", "비주얼 선택(V) → 들여쓰기(>)" 같은 짧은 루틴을 반복한다. 단축키를 한꺼번에 외우기보다, 매일 3~5개만 실제 편집에서 쓰는 방식이 가장 빨리 는다.
초간단 치트시트(필수만)
노멀로 돌아가기: Esc
저장/종료: :w / :q / :wq / :q!
이동: h j k l, w b e, 0 ^ $, gg G, Ctrl-f Ctrl-b
입력: i a o O
삭제: x, dd, dw, D
복사/붙여넣기: yy, yw, p P
취소/재실행/반복: u, Ctrl-r, .
검색/치환: /, n N, :%s/a/b/g, :%s/a/b/gc
비주얼: v, V, Ctrl-v (선택 후 y d c > <)
이 노트는 요약·비평·학습 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.
