vim 검색과 치환 — / ? n N 과 :%s 완전 정리
vim 검색 이동과 :s 치환 문법을 플래그와 범위까지 정리했습니다. 확인하며 치환하는 c 플래그, 대소문자 무시 옵션도 다룹니다.
검색으로 이동한다
실제 vim 의 검색은 정규식입니다. 점(.)은 아무 글자, *는 반복을 뜻하므로 글자 그대로 찾으려면 \. \* 처럼 역슬래시를 붙입니다. 이 연습기의 검색은 학습 편의를 위해 글자 그대로 찾습니다.
- /패턴 Enter 아래쪽으로 찾기
- ?패턴 Enter 위쪽으로 찾기
- n / N 다음 / 이전 결과
- * 커서 아래 낱말을 그대로 찾기 (# 는 위쪽으로)
- :noh 검색 강조 끄기
치환 문법
치환은 :[범위]s/찾을것/바꿀것/[플래그] 입니다. 범위와 플래그가 쓰임을 정합니다.
| 명령 | 범위 | 뜻 |
|---|---|---|
| :s/a/b/ | 현재 줄 | 첫 번째만 바꾼다 |
| :s/a/b/g | 현재 줄 | 모두 바꾼다 |
| :%s/a/b/g | 파일 전체 | 가장 많이 쓰는 형태 |
| :10,20s/a/b/g | 10~20줄 | 숫자 범위 |
| :.,+5s/a/b/g | 현재 줄부터 5줄 | . 은 현재 줄, $ 는 마지막 줄 |
| :'<,'>s/a/b/g | 비주얼로 고른 범위 | 비주얼에서 : 를 누르면 자동으로 들어간다 |
플래그
확인하며 바꾸는 :%s/old/new/gc 는 실수를 줄이는 좋은 습관입니다. 개수만 세는 :%s/old//gn 은 '이 이름이 몇 군데 있나'를 확인할 때 씁니다. 이 연습기는 g 플래그와 % 범위까지만 지원합니다.
- g 한 줄에서 모두 (없으면 첫 번째만)
- c 하나씩 확인하며 (y/n/a/q 로 답한다)
- i 대소문자 무시 / I 대소문자 구분
- n 바꾸지 않고 개수만 센다
바꿀 내용에서 쓰는 특수 표기
예를 들어 :%s/\(\w\+\)_id/\1Id/g 는 user_id 를 userId 로 바꿉니다. 이런 그룹 치환은 실제 vim 의 강력한 기능이며, 이 연습기에서는 다루지 않습니다.
- & 찾은 문자열 전체
- \1 \2 괄호로 묶은 그룹 (\(...\) 로 묶는다)
- ~ 마지막 치환에서 쓴 '바꿀 내용'
- \U \L 뒤따르는 내용을 대문자·소문자로
자주 묻는 질문
치환을 잘못했습니다.
u 한 번으로 :%s 전체가 되돌아갑니다. vim 은 한 번의 치환 명령을 하나의 변경으로 봅니다.
슬래시가 들어간 경로를 바꾸려면?
구분자를 바꾸면 편합니다. :%s#/old/path#/new/path#g 처럼 # 를 구분자로 쓸 수 있습니다.
다른 가이드
-
vim 종료·저장 방법 — :wq 부터 강제 종료까지
vim 에서 나가는 방법을 상황별로 정리했습니다. 저장하고 나가기, 저장 없이 나가기, 읽기 전용 파일 강제 저장, E37 오류 대처까지 실제 동작 기준으로 설명합니다.
-
vim 모드 완전 이해 — 노멀·입력·비주얼·명령줄
vim 이 모드를 쓰는 이유와 네 가지 모드의 차이, 모드 사이를 오가는 키를 정리했습니다. 모드를 이해하면 vim 의 나머지는 전부 이 위에 얹힙니다.
-
vim 커서 이동 총정리 — 방향키를 놓는 순서
hjkl 부터 w b e f t % gg G 까지, vim 이동 명령을 쓰는 순서대로 정리했습니다. 이동은 그 자체로도 쓰고 연산자 뒤에 붙여 범위로도 씁니다.
-
vim 연산자 — d c y 와 [연산자][이동] 문법
vim 편집의 문법은 [개수][연산자][개수][이동] 하나입니다. dw cw yy D C 를 외우는 대신 조합 규칙을 이해하는 방법을 설명합니다.
-
vim 텍스트 오브젝트 — ciw · ci" · di( 가 바꾸는 것
커서를 정확한 자리에 두지 않아도 편집할 수 있게 해 주는 텍스트 오브젝트를 정리했습니다. 실무에서 가장 많이 쓰는 vim 기능입니다.
-
처음 쓰는 .vimrc — 꼭 넣을 설정 12줄
vim 을 설치하고 처음 만드는 .vimrc 에 넣을 설정을 이유와 함께 정리했습니다. 줄번호, 검색 옵션, 들여쓰기, 클립보드까지.