파일 모드가 명시 적으로 DOS 인 경우에도 캐리지 리턴 (^ M)을 표시하는 gVim


78

Windows에서 gVim을 사용하고 있습니다. 내 코드는 ^M줄 끝에 문자를 표시 합니다. 나는 :set ff=dos소용이 없었습니다. ^M문자는 기존 라인에 대한 남아 있지만 내가 입력 줄 바꿈에 대한 표시되지 않습니다. 모드를 mac ( ^J문자 표시)과 unix ( ^M문자 도 표시 )로 전환하고 다시 dos로 전환했습니다. 다른 사람이 본 적이 있습니까?


vim / gvim의 줄 끝에 대한 포괄적 인 설명은 vim.wikia.com/wiki/File_format 을 참조하십시오 . 이 링크는 문제 해결 방법도 설명합니다.
axiopisty

답변:


139

이것은 Windows 라인 엔딩과 Unix 라인 엔딩이 혼합되어있을 때 발생합니다. 100 줄이 있고 99는 \ r \ n이고 하나는 \ n이면 99 ^ M 문자가 표시됩니다. 해결 방법은 한 줄을 찾아서 바꾸는 것입니다. 또는 파일에서 dos2unix를 실행하십시오. Windows 줄 끝을 다음으로 바꿀 수 있습니다.

:%s/\r\(\n\)/\1/g


이 글을 쓰기 직전에 한 줄을 찾았습니다. :) 감사!
Jerph

1
헤, 전형적인. Vim은 훌륭하므로 계속 사용하십시오! :-)
richq

2
나는 당신에게 +1000을 줄 수 있으면 좋겠다
the_e 2010-08-27

3
나는 보통 그냥 그들을 :%s/^M//
TMN

1
:set ff=dos완료했을 때 할 일이 되길 원한다면 에반의 대답을 추가해야합니다 .
Merlyn Morgan-Graham 2012


19

나는 보통 다음을 사용하여 줄 끝을 정리합니다.

:g/^M$/s///

ctrl-M을 얻으려면 일반적으로 ctrl-Q를 입력 한 다음 ctrl-M을 입력하고 입력합니다. (일부 환경에서는 ctrl-V 다음에 ctrl-M이 될 수 있습니다.) 이유는 모르겠지만, rq 보다 기억하기 쉽습니다 .

잊지 마세요. 그렇지 않으면 :set ff=dos여전히 UNIX 줄 끝으로 저장됩니다.


예, 저는 일반적으로 Ctrl-Q와 함께 ^ M 버전을 사용합니다. 그러나 설명하기가 더 어렵습니다 ;-) 그룹 매치 버전은 복사 붙여 넣기 친화적입니다.
richq

15

이미 답변을 받았지만 제가 사용하는 트릭은

:%s/\r/\r/g

이것은 unix 캐리지 리턴을 Windows CRLF로 대체합니다. 다른 사람이 문제가있는 경우를 대비하여 추가했습니다.


6

이 문자는 무시할 수 있습니다!

이것을 vimrc에 넣으십시오.

일치 무시 / \ r $ /


1
이것이 있다는 것을 아는 것이 좋지만 파일에 일치하지 않는 줄 끝을 남겨 두는 좋은 사용 사례가 있습니까? 문제를 요구하는 것 같습니다.
Jerph 2013 년

1
이것이 내가 필요로하는 것 이상입니다 (일부 개정 제어 시스템에 표시되는 파일에 대규모 변경이 발생하는 경우 파일 변경이 항상 권장되는 것은 아닙니다)
RunHolt

불행히도 이것은 파일을 저장하자마자 줄 끝을 변경합니다. 따라서 공백에 이러한 원치 않는 큰 변화를 정확히 보여주지 않고 생성합니다. 적어도 나에게는. :(
peschü

4

실제로 나를 위해 일한 것은 (64 비트 창, gVIM : 7.2) 다음과 같습니다.

:set ffs=dos

뿐만 아니라 : ff


4

Windows 7에서 Vim 7.3을 실행 중입니다. 다음 명령을 사용했습니다.

:%s/^M/\r/g

Ctrl + Q를 누른 다음 CTRL + M에 입력 한 ^ MI를 만들려면


2

이것은 아마도 많은 사람들에게 약간 간단하지만 기회가 없으면 유용합니다.

richq의 답변에 따라 vimrc에서 유용하다는 것을 알았습니다. 두 번째 것은 Vim이 매핑 된 ex 명령 인 경우 다른 키 입력이 작동 할 때까지 기다릴 것이기 때문에 dd를 약간 혼란스럽게 만들기 때문에 일반적으로 주석 처리됩니다.

함수! D2u ()
    '% s / \ r \ (\ n \) / \ 1 / g'실행
끝 기능
"맵 d2u : % s / \ r \ (\ n \) / \ 1 / g

첫 번째는 call D2u()ex 에 입력하여 실행되고 두 번째 D2u는 편집 모드에서 를 눌러 실행 됩니다.


2

이들은 일반적으로 혼합 된 UNIX / DOS 시스템에서 파일을 사용하기 때문에 추가 CR 행 끝입니다.

각 줄의 끝에서 하나의 ^ M을 제거하는 가장 짧은 대답은 다음과 같습니다.

:%s/\r

다음과 동일합니다.

:%s/\r//

그러나 끝 슬래시는 필요하지 않습니다 (가정).


1

많은 것을 시도했지만 다음은 작동했습니다.

:%s/\r/\r/g

참고 : 전체 파일에 효과를 적용 하려면 g를 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.