본문 바로가기

Linux

[VIM / VI] 문자열 바꾸기 (치환) 명령어

반응형

VIM, VI 문자열 바꾸기 (치환) 명령어



※ 먼저 VIM 또는 VI에서 편집중이라면, 키보드의 Esc 키를 눌러 편집모드에서 빠져나와야 한다.


그런 다음 아래와 같은 명령어를 사용하면 문자열을 치환할 수 있다.


:%s/변경전문자열/변경후문자열




applea is delicious

banana is delicious

apple is red

banana is yellow



만약 위와 같은 문자열이 있다고 하면, 

콜론(:)을 누르고 %s/apple/banana 라고 하면 모든 apple라는 문자열이 banana로 한꺼번에 치환된다.


bananaa is delicious

banana is delicious

banana is red

banana is yellow



문자열 치환시 매번 확인하는 옵션 (c)

:%s/apple/banana/c


위와 같이 c 옵션을 붙이면

바꿀 때마다 바꾸어도 좋은지 물어보기에 더 안전하다. 

y를 누르면 바꾸고, n을 누르면 다음으로 건너뛰고, a를 누르면 모두 치환한다.



문자열에 완벽하게 일치할 때만 변경하는 방법

:%s/\<apple\>/banana


이렇게 하면 정확하게 apple에 일치될 때만 바꾼다.

 

즉 apple는 바꾸지만, apple 앞뒤로 다른 문자열이 붙어 있는 경우, 


예를 들어


applea is delicious

banana is delicious

apple is red

banana is yellow


와 같은 문자열이 있을때 위 명령어를 사용하면 아래와 같은 결과가 나온다. 


applea is delicious

banana is delicious

banana is red

banana is yellow


밑줄 친 부분은 완벽히 일치하지 않아서 치환이 되지 않은 것을 볼 수 있다.




대소문자 구분없이 문자열을 치환하는 방법

:%s/apple/banana/i


이렇게 i 옵션을 붙입니다.





전역 치환


appleappleappleappleappleappleappleapple


위 문자열 처럼 같은 문자열이 줄지어 붙어있는 경우에는 


문장의 첫번째 apple만 banana로 치환된다. 


bananaappleappleappleappleappleappleapple


문장의 모든 apple를 banana로 치환하려면 g 옵션을 사용한다.


:%s/apple/banana/g



대소문자 구분없이 치환하기 위해서는 이렇게 i 옵션을 추가로 줄 수 도 있다.


:%s/apple/banana/gi


반응형