vi 문자열 변환
기본적인 방법
:(시작줄),(끝줄)s/원본단어/바꿀단어/옵션
시작줄,끝줄s
는 치한활 범위를 행번호로 지정.
일 경우 현재 커서가 있는 줄$
는 제일 마지막 줄%s
는 문서 전체
옵션
- g
- 지정한 범위에 해당하는 모든 단어 변경
- i
- 대소문자를 구분하지 않고 모두 변경
- c
- 단어를 바꿀 때 해당 단어를 변경할지 말지 확인하고 변경
- y : 현재 찾은 단어를 변경하고 다음 단어로 이동
- n : 현재 찾은 단어를 변경하지 않고 다음 단어로 이동
- a : 현재 찾은 단어부터 이후 모든 단어 변경
- q : 변경 종료
- l : 현재 찾은 단어를 변경하고 종료
- 단어를 바꿀 때 해당 단어를 변경할지 말지 확인하고 변경

예제
:%s/naver/blog/c
- 문서 전체에 대해 naver를 blog로 변경하는데 단어마다 확인
:5,10s/naver/blog
- 5~10번째 행에서 각 행 중 먼저 나오는 naver를 blog로 변경
:.,.+10s/naver/blog/g
- 현재 행부터 현재 행 + 10번째 행까지 모든 naver를 blog로 변경
:1,$s/naver/blog/i
- 문서 전체에 대해 대소문자 상관없이 naver를 blog로 변경
:%s/naver/blog/gi
- 문서 전체에 대해 대소문자 상관없이 naver를 blog로 변경
정규표현식 사용
정규표현식
- 정규 표현식은 하나 이상의 문자열을 한 번에 나타낼 수 있는 패턴으로 반복되는 문자나 일부만 일치하는 문자 등을 표현할 수 있는 식이다.
. : 임의의 한 글자, a.d는 aad, acd, azd, ...
[list] : list 중의 한 글자
[adf] : a 또는 b 또는 f
[a-d] : a, b, c, d
[^adf] : a, d, f를 제외한 나머지 중 한 글자
[adf^] : a 또는 d 또는 f 또는 ^ 중 한 글자
\* : 0번 이상의 반복, a*는 a, aa, aaa, aaaa, ...
**확장 정규표현식**
\+ : 1번 이상의 반복, a+는 aa, aaa, aaaa, ...
| : a | b는 a 또는 b
() : 그룹으로 (ab|cd)ef는 abef 또는 cdef
? : ab?는 a 또는 ab
{} : 구체적인 숫자, {n, m} n번 이상 m번 이하 반복
예제
- 복수의 문자열을 하나의 문자열로 변경
:%s/[vV]i//g
: vi 또는 Vi를 삭제:%s/<.*>//g
: html 태그와 같은 등을 삭제:%s/(gnu\|Gnu)/GNU/g
: gnu 또는 Gnu를 GNU로 변경
- 완벽하게 일치하는 문자열 변경
:%s/<naver>/blog
: 정확히 naver의 단어만 blog로 변경
참고
반응형