VIM Search and Replace

패턴을 검색하는 방법은 크게 두 가지가 있다. 먼저 그 줄에서 일치하는 글자를 찾는 방법이다. 만약 현재 줄에서 \’a\’라는 문자를 찾고 싶다면 fa를 입력한다. 다음 \’a\’를 검색하려면 ;를 입력하고 다시 이전의 \’a\’를 검색하려면 ,를 입력한다. 사실 위에서 배운 한 줄 안에서의 검색은 별로 쓸 일이 없을 것 같다. 대부분의 경우 그냥 눈으로 보고 h, l 키나 w, b 키로 찾아가는 것이 속편하다는 사람이 많을 것 같다. 보다 많이 쓰이는 검색 방법은 문서 전체에서 특정 패턴을 찾는 방법이다. 문서 전체에서 특정 패턴을 찾는 방법을 정리하면 다음과 같다.

/[pattern]<CR> 현재위치에서부터아래방향으로패턴검색
?[pattern]<CR> 현재위치에서부터위쪽방향으로패턴검색
n 검색하던방향으로계속패턴검색
N 검색하던반대방향으로계속패턴검색

만약 \’linux\’라는 단어를 검색하고 싶다면 다음과 같이 입력한다.
/linux
계속하여 일치하는 패턴을 검색하고 싶다면 n을 입력한다. 문서의 맨 마지막 패턴에서 다시 n을 누르면 다시 문서의 처음부터 검색을 시작할 것이다. 이 기능을 끄고 싶다면 다음과 같이 입력한다.
:set nowrapscan 또는 :set nows
이제 문서의 끝에 도달하면 다시 처음으로 돌아가지 않을 것이다. 다시 켜고 싶다면 다음과 같이 입력한다.
:set wrapscan 또는 :set ws

 

:s/old/new<CR> 현재줄의처음 old를 new로교체
:s/old/new/g<CR> 현재줄의모든 old를 new로교체
:1,20s/old/new/g<CR> 1부터 20번째줄까지모든 old를 new로교체
:-2,+4s/old/new/g<CR> 커서 2줄위부터 4줄아래까지 old를 new로교체
:%s/old/new/g<CR> 문서전체에서 old를 new로교체
:%s/old/new/gc<CR> 문서전체에서 old를 new로확인하며교체
:g/pattern/s/old/new/g<CR> pattern이있는모든줄의 old를 new로교체
:g/pattern/s//new/g<CR> :%s/old/new/g<CR>과동일