파일 모드가 명시 적으로 dos 인 경우에도 캐리지 리턴 (^m)을 표시하는 gvim
-
18-09-2019 - |
문제
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
다른 팁
나는 보통 다음을 사용하여 라인 엔딩을 정리합니다.
: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 전체 파일에 미치는 영향을 원한다면