글 작성자: juyoungit

이는 command-line mode에서 파일의 내용을 찾아서 변경 할 수 있는 명령어로서 그 종류는 다음과 같다.

종류

기능

:s/찾는단어/새단어

현재 라인에서 찾는 단어를 새 단어로 한 번만 찾아서 바꾸기

:s/찾는단어/새단어/g

현재 라인에서 찾는 단어를 새 단어로 모두 바꾸기

:%s/찾는단어/새단어/g

현재 파일에서 찾는 단어를 새 단어로 모두 바꾸기

:%s/찾는단어/새단어/gc

현재 파일에서 찾는 단어를 새 단어로 모두 바꾸되 물어보면서 바꾸기

:#,#s/찾는단어/새단어/g

두 라인 번호(#) 사이에서 찾는 단어를 새 단어로 모두 바꾸기

 

1. :s/찾는단어/새단어 - 현재 커서가 위치한 줄에서 찾는 단어를 새 단어로 한 번만 찾아서 바꾸기

다음과 같은 상황에서 :s/Linux/Vim 을 입력하면

다음과 같이 해당라인에서 가장 먼저 탐색된 단어를 새단어로 한 번만 바꿔주는 것을 확인할 수 있다.

2. :s/찾는단어/새단어/g - 현재 라인에서 찾는 단어를 모두 새 단어로 바꾸기

여기서 가장 뒤에 붙는 g는 globally를 의미하는 것으로서 이를 통해 해당 명령의 기능을 어느정도 예상할 수 있다.

다음과 같은 상황에서 :s/Linux/Vim/g를 입력하면

해당라인의 모든 찾는 문자들이 새문자로 바뀐 것을 확인할 수 있다.

3. :%s/찾는단어/새단어/g - 현재파일에 존재하는 모든 찾는 단어를 새단어로 변경

다음과 같은 상황에서 :%s/Linux/Vim/g 를 입력하면

다음과 같이 파일내의 모든 단어 Linux가 Vim으로 변경된 것을 확인할 수 있다.

4. :%s/찾는단어/새단어/gc - 현재파일에 존재하는 모든 찾는 단어를 새단어로 변경(변경 전 확인을 거침)

해당명령어 뒤에 붙는 c는 confirm을 의미한다. 그래서 그 의미 그대로 변경하기 전에 확인 후 변경을 시행한다.

다음과 같은 상황에서 :%s/Linux/Vim/gc 를 입력하면

다음과 같이 변경되어야할 문자가 별도로 표시되면서 사용자에게 확인하는 메시지 창이 나오게 된다. 여기서 각 문자들이 가지는 의미는 다음과 같다.

종류

기능

추가설명

y

현재 표시된 찾는 단어를 새 단어로 변경한다.

변경 후 또 다른 찾는 단어를 검색

n

현재 표시된 찾는문자에 대한 변경을 허용하지 않는다.

변경되지 않고 다음단어를 찾는다.

a

파일의 모든 찾는문자를 새문자로 변경한다.

모든 파일에 대해서 이루어진다.

q

해당명령을 종료한다.

다시 Command mode로 돌아온다.

l

현재 표시된 찾는 단어를 새 단어로 변경하고 해당 명령을 종료한다.

다시 Command mode로 돌아온다.

단순히 확인을 하는 것이 아니라 다양한 옵션으로 확인을 지원한다는 점을 기억해 두도록 하자. 선택하는 옵션에 따라서 각각의 기능에 따라 변경이 진행되는 것을 확인할 수 있다. (^E와 ^Y는 아직 기능을 명확하게 파악하지 못해서 차후에 수정하여 게시하는 것으로 하겠음)

5. :#, #s/찾는단어/새단어/g - 두 라인 번호(#) 사이에서 찾는 단어를 새 단어로 모두 변경

다음과 같은 상황에서 5,7s/Linux/Vim/g 를 입력하면 그 결과는 다음과 같다.

다음과 같이 5 ~ 7번 라인에 존재하는 찾는 단어(Linux)들이 모두 새 단어(Vim)로 변경된 것을 확인할 수 있다.