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

StackOverflow https://stackoverflow.com/questions/799417

문제

Windows에서 GVIM을 사용하고 있습니다. 내 코드가 표시됩니다 ^M 줄 끝의 캐릭터. 나는 사용했다 :set ff=dos 아무 소용이 없습니다. 그만큼 ^M 캐릭터는 기존 라인의 경우에도 남아 있지만 내가 입력 한 신성선에는 나타나지 않습니다. 모드를 Mac으로 전환했습니다 (쇼 ^J 캐릭터)와 유닉스 (또한 보여줍니다 ^M 캐릭터) 및 복귀로 돌아갑니다. 다른 사람이 이것을 본 적이 있습니까?

도움이 되었습니까?

해결책

이것은 Windows 라인 엔딩과 Unix 엔딩이 혼합되어있을 때 발생합니다. 100 줄이 있다면, 99는 r n이고 하나는 n이면 99 ^m 문자가 나타납니다. 수정은 해당 한 줄을 찾아 교체하는 것입니다. 또는 파일에서 dos2unix를 실행하십시오. Windows 라인 엔딩을 다음과 같이 바꿀 수 있습니다.

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

다른 팁

당신은 또한 실행할 수 있습니다 :

:e ++ff=dos

제거하려면 ^M: 보다 파일 형식 - vim 팁 위키.

나는 보통 다음을 사용하여 라인 엔딩을 정리합니다.

:g/^M$/s///

Ctrl-M을 얻으려면 일반적으로 Ctrl-Q를 입력 한 다음 Ctrl-M을 입력하고 넣습니다. (일부 환경에서는 Ctrl-V 일 수 있습니다. 기억하기 쉽습니다 RQ'에스.

그렇게하는 것을 잊지 마십시오 :set ff=dos 또한 유닉스 라인 엔딩으로 여전히 절약 할 수 있습니다.

나는 이것이 이미 대답되었음을 알고 있지만, 내가 사용하는 트릭은

:%s/\r/\r/g

이것은 Unix 캐리지 리턴을 Windows CRLF로 대체합니다. 다른 사람에게 문제가있는 경우에 추가되었습니다.

이 숯을 무시할 수 있습니다!

이것을 VIMRC에 넣으십시오

일치 무시 / r $ /

실제로 저를 위해 일한 것은 (64 비트 창에서, GVIM : 7.2) :

:set ffs=dos

뿐만 아니라 FF

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

:%s/^M/\r/g

ctrl+q에서 입력 한 ^mi를 만들려면 ctrl+m을 만듭니다.

이것은 아마도 많은 사람들에게 약간 간단하지만 우연히 유용합니다.

Richq의 대답을 바탕으로, 나는 이것이 내 Vimrc에서 유용하다는 것을 알았습니다. 두 번째는 VIM이 다른 키 스트로크가 매핑 된 전 사령부 인 경우 다른 키 스트로크가 해결되기를 기다릴 때까지 DD가 약간 혼란스러워지기 때문에 정상적으로 댓글을 달아야합니다.

function! D2u()
    execute '%s/\r\(\n\)/\1/g'
endfunction
"map d2u :%s/\r\(\n\)/\1/g

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

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

각 라인의 끝에서 단일 ^m을 제거하기위한 가장 짧은 답변은 다음과 같습니다.

:%s/\r

다음과 같습니다.

:%s/\r//

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

많은 것을 시도했지만 다음은 효과가있었습니다

:%s/\r/\r/g

참고 : 사용 g 전체 파일에 미치는 영향을 원한다면

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top