Vi / Vim 문자열 변경 - Dos, Windows 개행문자 ^M 처리

윈도우에서 작성한 소스 코드를 Unix 혹은 그냥 GitHub 이런데 올려뒀다가 리눅스 환경에서 한 번 열어보면 "^M" 이란문자가 라인의 마지막에 막 붙어 있는 것을 볼 수 있다.

이거 머야? 넣은 적이 없는데

엔터 처리에 대한 부분이 윈도우/도스, 리눅스, 유닉스가 막 다르다 보니 나타나는 현상인데 

CR+LF 로 처리하는 엔터를 리눅스에서 LF 만으로 처리하니 떡하니 CR 이 남아있어서 보이는 현상으로 볼 수 있다.

우찌 되었던 제거 해야 한다.

문자열 변경하는 방법

vi 에디팅 중에 문자열을 바꾸고 싶다면 아래와 같은 패턴으로 명령을 주면 가능하다.

:%s/찾는문자열/바뀔문자열/g 

맨 마지막 /g 는 문서 전체를 나타낸다.

^M 제거하기

그럼 ^M을 제거하려면 위에서 언급한 문자열 변경으로 가능할 것이다.

:%s/^M//g

주의할 점은 "^M"은 이렇게 표기가 되어 있어도 실제 키보드로 입력할 때는 "Ctrl+v+m" 을 넣어줘야 한다는 사실을 명심합시다!!

다른 방법

아래 처럼 ff=unix 로 주고 저장하면 자동으로 사라진다고 하네요.

:set ff=unix

https://5pecia1.github.io/posts/2016-11-22-use-lf-with-vim-vscode-git-on-windows.html

 

(Vim, Visual Studio Code, Git) 윈도우에서 줄바꿈을 Line Feed(LF, \n)문자로 하기 - Yak Shaving Mania

이번 글에서는 CRLF()으로 되어 있는 모든 파일을 LF()으로 한번에 변환하는 작업은 다루지 않습니다. 좋은 방법을 아시면 공유 부탁 드립니다. 대부분의 윈도우에서 작업한 text의 새줄 문자(newline,

5pecia1.github.io

레퍼런스

http://www.devkuma.com/pages/1530

 

프로그램 개발 지식 공유, devkuma

데브쿠마는 프로그래밍 개발에 대한 지식을 공유합니다.

www.devkuma.com

http://mwultong.blogspot.com/2007/08/vim-vi-m-m.html

 

Vim Vi 에서 ^M 지우기, 행끝의 캐럿 M 기호 제거 방법

 

mwultong.blogspot.com

https://sidepower.tistory.com/255

 

리눅스 ^M 또는 특수문자(CRLF) 제거 치환하기

일을 하다 보면 윈도우 환경에서 프로그램 코딩을 하고 ftp를 통해 리눅스 서버로 소스파일을 전송해서 다시 리눅스에서 컴파일해서 실행을 하곤 하는데요. 이럴 때 눈에 보이지 않지만 라인 끝

sidepower.tistory.com

팁 받아요~~

RODNAE Productions 님의 사진, 출처: Pexels