Devin.KR

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 처럼 # 를 구분자로 쓸 수 있습니다.