검색도 motion이야
/pattern으로 다음 걸 찾는 건 이미 알지. 진짜 마법은 검색이 operator와 붙는다는 데 있어. d/foo<Enter>는 커서부터 다음 "foo"까지를 통째로 지워. 검색은 따로 노는 도구가 아니라 동사 체인에 들어가는 재료야.
기본 검색 키
/pattern— regex로 앞쪽 검색.?pattern— 뒤쪽 검색.n— 다음 매치 (마지막 검색과 같은 방향).N— 반대 방향 매치.*— 커서 위 단어를 앞쪽으로 검색.#— 커서 위 단어를 뒤쪽으로 검색.:noh— 검색 하이라이트 끄기 (트랙 4에서<Esc>에 매핑할 거야).
Substitute 명령
Vim의 :s가 regex 검색-치환이고, 알아둬야 할 flag가 몇 개 있어.
g— 줄 안에서 전부 (첫 번째만 바꾸고 멈추지 않아).c— 하나씩 확인받기 (위험한 변경엔 이걸 붙여).i— 대소문자 무시.I— 대소문자 구분 (ignorecase설정을 무시해).
범위가 중요해
:s/a/b/는 지금 줄만 바꿔. :%s/a/b/g에서 %는 "파일 전체"고. :'<,'>s/a/b/g는 Visual로 고른 범위, :5,20s/a/b/g는 5번부터 20번 줄이야. 범위가 먼저, 명령이 나중 — 이 순서만 기억하면 돼.
magic, very magic, 그리고 백슬래시 지옥
Vim의 regex에 기호가 유난히 많아 보이는 건, 기본 상태로는 메타문자마다 백슬래시를 붙여야 해서야. 패턴 맨 앞에 \v를 붙이면 "very magic" 모드가 켜지면서 다른 데서 쓰던 regex랑 똑같아져. (, +, ?가 백슬래시 없이 먹히거든. 조금이라도 복잡한 regex는 무조건 \v로 시작하는 습관을 들여.
마지막 치환 다시 걸기. Normal mode에서
&를 누르면 지금 줄에 마지막 :s를 다시 걸어. g&는 파일 전체에 다시 걸고. dot 명령이랑 같은 발상이야 — 검색·치환도 자기만의 반복 키를 갖고 있는 거지.