명령어 형식
substitution 의 기본 명령어 형식은 다음과 같음.
:[range]s/[교체전문자열]/[교체후문자열]/[options]
- seperator로
/
slash를 사용했으나,
로 바꾸어도 동작함.[교체전문자열]
이나[교체후문자열]
등에 slash가 있는 경우,
를 seprator로 사용하길 권함. [range]
뒤의s
가 substitue 를 의미함.- 지정한 범위에서
[교체전문자열]
을 찾아[교체후문자열]
로 치환. [options]
는 substition 수행시 세부사항을 지정 (ignore case 등)
range 지정
vim에서 range 지정 방식은 다음과 같음. (delete 에서도 같은 방식으로 사용됨.)
[시작부분],[끝부분]
or
[범위지정meta-character]
[시작부분]
과 [끝부분]
은 다음의 범위지정 meta-character들이 사용됨.
%
: 문서전체. 혼자서 range를 지정. 가장 많이 사용됨..
: 현재 line.$
: 마지막 line.+n
:+3
현재 위치에서 아래로 3개 line.-n
:+3
현재 위치에서 위로 3개 line.
options
g
: global 의 약자로 파일전체에 적용시킨다. 해당 option이 없을 경우, 가장 처음 검색되는 1건에서 substitution이 수행되고 종료함.(yes/no를 묻지않고 치환되니 주의)c
: confirm 의 약자로 substitution 이 이루어질 때마다 치환여부를 물어본다.i
: ignore case 의 약자로 검색시 case sensitive를 적용하지 않는다.e
: substitution 중 발생하는 error를 무시한다.
참고 : carriage return 입력
windows에서 newline은 CR(carriage return)과 LF(line feed)를 사용하는데, CR을 지정하려면 ctrl+q+m
(or ctrl+v+m
)을 입력해야 한다.
만일 CR을 모두 제거하려고 한다면 [교체전문자열]
에 ctrl+q+m
을 입력해주고, [교체후문자열]
입력없이 separator를 곧바로 입력한다.
다음을 참고.
:%s/^M//g
^M
이라고 보이지만ctrl+q+m
을 입력한 결과가 이렇게 보이는 것임. 그대로 치면 안됨.
vim에서 newline 변경은
command mode에서:set ff=unix
로 처리한 후 저장하면 자동으로 newline이 LF가 된다.
만일 windows의 CRLF로 저장하려면,:set ff=dos
를 수행하고 저장하면 된다.
참고자료
참고로, vim에서 substition은 sed 사용법과 동일하다.
sed
는 stream editor의 약자로
text file editing을 수행하는 command.
https://reakwon.tistory.com/164
carriage return 관련
https://stackoverflow.com/questions/5939142/replacing-carriage-return-m-with-enter
vim 사용법 요약본
https://dsaint31.tistory.com/entry/Linux-vi-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC
'utils' 카테고리의 다른 글
[Util] curl 간단사용법 정리 : web의 자원 다운로드하기. (0) | 2023.09.29 |
---|---|
[Util] Windows Terminal (0) | 2023.09.05 |
[vscode] cSpell extension : Code Spell Checker (0) | 2023.08.04 |
[Vim] WSL2의 vim에서 윈도우 app로 copy and paste하기 (0) | 2023.07.07 |
[Linux] Simple Merge PDF files (0) | 2023.06.22 |