[Linux] vi(또는 vim)에서 문자열 치환하기

vi 또는 vim에서 문자열들을 원하는 문자열로 바꿔보자.


환경

  • Linux 기반 시스템
  • Bash shell(/bin/bash)
  • vi 또는 vim


vi(또는 vim) 문자열 치환

기본형

형식

:%s/[원래문자열]/[바꿀문자열]/[옵션]
  • 위와 같은 형식으로 다양한 옵션과 함께 사용 가능
  • 옵션은 하나만 사용하는게 아니라 혼합해서 같이 사용 가능
  • 위 명령어에서 %를 제외하면 현재 커서가 위치한 줄에서만 치환을 합니다.

옵션

  • g: 해당 문자열에 해당하는 문자열들을 모두 치환하는 옵션
ThisThisThis -> testtesttest
:%s/This/test/g
  • c: 치환하기 전에 매번 치환할지 확인하는 옵션
ThisThisThis -> testThisThis
~
replace with test (y/n/a/q/l/^E/^Y)?y
:%s/This/test/c
  • i: 대소문자를 구분하지 않는 옵션
ThistHisthIs -> testtesttest
:%s/This/test/ig


예제

  • 테스트에 사용할 예제 작성
$ vi test.txt
This is test string. This is it!
This is second string.

예제 0 - 현재 줄에서 첫 ‘This’를 ‘tHIS’로 치환

  • 다음 아래처럼 %를 제외하고 하면 됩니다.
tHIS is test string. This is it!
This is second string.
~
~
:s/This/tHIS

예제 1 - 각 줄의 첫 ‘This’를 ‘tHIS’로 치환

  • 아무 옵션이 없다면 하나의 줄에서 해당 문자열을 찾으면 치환하고 다음 문자열로 넘어갑니다. 즉, 뒤에 동일하게 맞는 문자열이 있더라도 넘어가게 됩니다.
tHIS is test string. This is it!
tHIS is second string.
~
~
:%s/This/tHIS

예제 2 - 문서 전체의 ‘This’를 ‘tHIS’로 치환

  • g 옵션을 이용해 전체에서 해당하는 문자열을 모두 치환할 수 있다.
tHIS is test string. tHIS is it!
tHIS is second string.
~
~
:%s/This/tHIS/g

예제 3 - 매번 치환할 때 확인해서 바꾸기

  • c 옵션을 사용해 매번 확인 가능
  • g 옵션을 함께 이용해 문서 전체에서 바꾸도록 설정
  • 해당 예제에서는 y->n->y로 입력해서 순서대로 치환
this is test string. This is it!
this is second string.
~
~
replace with test (y/n/a/q/l/^E/^Y)?y
:%s/This/tHIS/cg

예제 4 - 대소문자 구분없이 문서 전체에서 ‘This’를 ‘tHIS’로 치환

  • i 옵션을 이용해 대소문자를 구분하지 않으면서 g 옵션을 이용해 전체에서 해당하는 문자열을 모두 치환
tHIS is test string. tHIS is it!
tHIS is second string.
~
~
:%s/this/tHIS/ig


참고자료