VI 치환 명령 기본 사용법
VI 치환 명령 기본 사용법

 

여년 전 VI에디터를 처음 접하고 "이런 툴이 있다니 너무 굉장하다"라고 생각을 했었죠. 특히 가장 매력적인 기능은 문자열 치환이었는데요.

 

대량의 문자를 찾아서 고쳐야하는 업무가 많은 시점이었는데 불과 몇 시간이 걸릴 일을 순식간에 처리해 주니 놀라울 따름이었습니다.

 

아마도 VI에디터에서 가장 많이 사용되는 기능이 바로 문자열 치환 기능이 아닐까 싶은데요. 치환 기능에 대한 다양한 예시를 통해 VIM 에디터에서 문자열을 치환하는 방법을 배워보도록 하겠습니다.

 

저는 요즘 VIM을 주로 사용하여 VIM을 위주로 알려드리겠습니다. VI와 크게 다른 점은 없습니다.

 

문자열 치환하기

기본 명령 사용법

치환시키는 명령어는 소문자 s입니다.

 

기본 방식은 비주얼 모드(Visual Mode)나 입력 모드(Input Mode)가 아닌 상태에서 :를 입력하여 명령 모드 (Command Mode)로 진입합니다. 그리고 s를 입력하여 치환 명령을 시작합니다.

 

:s/찾을 문자열/바꿀 문자열

 

 

예를 들어 "bitcoin binance"라는 문자를 "altcoin binance"로 변경하고 싶다면 :s/bi/al 를 입력합니다.

 

기본 명령은 커서가 위치한 열의 문자열 한개만 치환합니다.

 

기본 치환 명령 예시
VI 기본 치환 명령

 

 

다양한 치환 옵션과 응용

단순한 치환만으로는 VIM의 강력한 힘을 느낄 수 없겠죠? 다양한 옵션과 응용법을 알게 되면 다양한 상황에서 활용이 가능하기 때문에 미리 알아두시면 도움이 됩니다.

 

옵션은 명령어 끝에 /(슬래시)를 붙이고 그 뒤에 입력하여 사용합니다.

 

g 옵션

"bitcoin binance"의 bi를 모두 al로 변경하고 싶다면 뒤에 /g를 붙여 ":s/bi/al/g" 를 입력합니다.

 

g는 같은 열에 포함된 문자를 모두 변경하겠다는 뜻입니다. g를 붙이지 않으면 가장 첫번째 문자만 변경이 됩니다.

 

c 옵션

치환할 문자열에 대해 하나하나 치환 여부를 확인 하고자 할 때 사용합니다. 이 옵션을 적용하면 y/n/a/q/l/^E/^Y 를 선택할 수 있습니다. 각 선택지가 갖는 의미는 다음과 같습니다.

 

  • y: 선택된 하나의 문자열 치환
  • n: 선택된 하나의 문자열 치환하지 않고 넘김
  • a: 이후 부터 모든 문자열 치환
  • q: 치환하지 않고 종료
  • l: 선택된 하나의 문자열을 치환후 종료
  • CTRL+E: 화면 위로 스크롤
  • CTRL+Y: 화면 아래로 스크롤

 

%s

:s 대신 :%s를 입력하는 경우 문서 전 영역에 대해 치환할 문자열을 찾습니다. :s보다도 :%s를 사용할 일이 더 많을 것이니 꼭 기억하시기 바랍니다.

 

문서 전체를 한번에 바꿀 수 있으므로 걍력한 대신 의도하지 않은 변경이 발생할 수 있습니다. 그럴 때 c옵션을 사용하여 문자열을 확인해 가며 변경하면 좋습니다.

 

제가 주로 사용하는 명령은 ":%s/찾는 문자/변경할 문자/gc"입니다. 이렇게 하면 변경 전에 제대로 적용되는지 확인해 보고 a를 눌러 나머지를 처리할 수 있어서 편리하더라고요. 물론 c로 확인할 필요가 없는 단순한 치환의 경우 

 

일정한 범위 지정

v를 눌러 비주얼 모드로 들어가 치환이 필요한 범위를 방향키로 선택하고 ":"를 입력합니다.

 

그러면  :'<,'> 가 명령 표시줄에 나타나게 되는데요. 그 상태에서 s를 입력하여 치환을 해주시면 됩니다.

 

마찬가지로 g옵션을 사용하면 열에 포함된 여러개의 문자열을 모두 치환할 수 있으며, g옵션이 없는 경우 각 열의 가장 첫번째 문자열만 교환됩니다.

 

:'<,'>s/bi/al/gc

 

비주얼 모드와 함께 사용하는 예시
비주얼 모드와 함께 사용하기

 

이제 기본적인 치환은 습득하셨으니 다음엔 더 다양한 활용법을 알려드리겠습니다.

 

감사합니다.

Total
Today
Yesterday