모든 줄에 vim이 표시됩니다 ^ M
이것을 '정상적인'줄 바꿈으로 바꾸려면 어떻게합니까?
모든 줄에 vim이 표시됩니다 ^ M
이것을 '정상적인'줄 바꿈으로 바꾸려면 어떻게합니까?
답변:
:e ++ff=dos
뒤에 :set ff=unix
엔딩은 제정신 형식으로 변환됩니다.
:%s/<Ctrl-V><Ctrl-M>/\r/g
여기서 <Ctrl-V><Ctrl-M>
type Ctrl+ Vthen Ctrl+를 의미합니다 M.
:%s
대체, % = 모든 줄
<Ctrl-V><Ctrl-M>
^ M 문자 (Ctrl-V는 Ctrl ^ 문자를 작성하는 Vim 방식이며 Ctrl-M은 정규 표현식 다음에 M을 기록하여 ^ M 특수 문자)
/\r/
줄 바꿈 ( \r
)
g
그리고 전 세계적으로 수행하십시오.
:%s/<Ctrl-V><Ctrl-M>/\r/g
여기서 \ r은 ^ M을 줄 바꾸기로 바꿉니다.
Linux 및 Mac OS에서 다음이 작동합니다.
:%s/^V^M/^V^M/g
여기서 ^V^M
수단 형 Ctrl+ V다음 Ctrl+ M.
참고 : Windows 에서는 기본적으로 텍스트를 붙여 넣기 위해 매핑 되므로 ^Q
대신 대신 을 사용하려고 합니다.^V
^V
%s/\r/\r/g
MacVim ^M
에서 줄 끝에 만 표시되는 파일 (MacVim 용어에서 하나의 긴 줄)에 대해 동등한 기능을 발견 했습니다 . 분명히 \ r은이 명령의 대체 부분과 패턴에서 다른 것을 의미합니다.
에서 vim
DOS 또는 Unix 파일 형식을 확인하십시오.
:set filetype=unix
:set fileformat=unix
캐리지 리턴 (CR, ^ M) 문자없이 파일이 다시 쓰여집니다.
set ff=unix
동일한 방법으로 약간의 바로 가기로 ft
바로 가기입니다filetype
MacVim 에서 볼 수있는 BBEdit으로 만든 파일 ^M
은 일반 파일 대신 여러 줄을 표시했습니다 . 다음 문자열 대체로 문제가 해결되었습니다. 도움이 되었기를 바랍니다.
:%s/\r/\r/g
줄 바꿈을 같은 문자로 대체하기 때문에 흥미 롭지 만 Vim이 올바르게 표시하려면 신선한 \ r을 가져와야한다고 가정합니다. 왜 이것이 작동하는지에 대한 기본 메커니즘을 알고 싶습니다.
\r
문자 를 대체하는 것처럼 보였습니다 . 불평하지 않고 정확히 내가 원하는 것입니다. 그냥 이상해 \n
\r
먼저 :set ff?
파일 형식을 알아내는 데 사용 하십시오.
unix
문제가 될 수 있습니다 . 문제는 파일이 fileformat=dos
줄 끝에 "^ M ^ J"를 추가하여 만들어 졌지만 줄 끝 flieformat=unix
에서 "^ J"를 제거하고 "^ M"을 남겨두고 읽은 것입니다.
:e ++ff=dos
Vim 명령 행에 입력하면 파일 형식을 유닉스에서 할일로 변경할 수 있습니다. 문제를 해결해야합니다. 그렇지 않은 경우 :%s/\r//g
도움이 될 것입니다.
:e ++ff=dos
다음 :set ff=unix
과:w
^ M 문자를 일치시키기 위해 시각적으로 선택하고 OS copy to clipboard 명령을 사용하여 검색해야했습니다. replace 명령을 시도하기 전에 문자를 검색하여 테스트 할 수 있습니다.
/^M
첫 번째 불량 라인을 선택해야합니다
:%s/^M/\r/g
모든 잘못된 ^ M을 캐리지 리턴으로 바꿉니다.
이것은 gvim 7을 기반으로하는 MacVim의 기능입니다.
편집하다:
Windows 용 Ubuntu가있는 Windows 10 컴퓨터에서이 문제가 다시 발생하면 vim의 파일 형식 문제가 발생한다고 생각합니다. 이 경우 ff를 unix, mac 또는 dos로 변경하면 ^ M을 ^ J로 변경했다가 다시 되 돌리는 것 외에는 아무것도하지 않습니다.
이 경우의 해결책 :
:%s/\r$/ /g
:%s/ $//g
내가이 경로를 선택한 이유는 파일을 손상시키지 않기를 원했기 때문입니다. 나는 할 수 :%s/\r$//g
있었지만 캐리지 리턴을 즉시 삭제했으며 예기치 않은 결과가 발생했을 수 있습니다. 대신 단일 CR 문자 (여기서는 ^ M 문자)를 공백으로 변환 한 다음 줄 끝의 모든 공백을 제거합니다 (나에게있어 바람직한 결과는 아닙니다)
오래 전에 답변 된 오래된 질문을 되새겨 줘서 미안하지만 혼란스러워 보였고 이것이 Google 검색에서 높은 것으로 나타났기 때문에 그 중 일부를 정리하는 데 도움이 될 것이라고 생각했습니다.
Ctrl을 사용할 필요가 없습니다.
:%s/\r$//
나는 이것을 sed와 함께했다 :
sed -i -e 's/\r/\n/g' filename
sed -e 's/\r/\n/g' <<< 'over and over'
->oven and oven
sed
하지만 BSD 에서는 작동 하지 않는 것 같습니다 sed
. 줄 바꿈을 수정하는 사람은 아마도 여러 운영 체제와 함께 작동 할 것이므로 답이 언제 작동하는지 명확하게 이해하는 것이 좋습니다.
어떻습니까 :
:%s/\r//g
그것은 저에게 완전히 효과가있었습니다.
이것이하는 것은 모든 줄의 끝을 청소하는 것입니다. ^ M을 제거하면됩니다.
이 질문에 대한 다른 답변이 많이 있지만 여전히 명령 줄 솔루션이 필요하므로 다음이 가장 효과적입니다.
vim -u NONE -c 'e ++ff=dos' -c 'w ++ff=unix' -c q myfile
설명:
myfile
:e ++ff=dos
dos 줄 끝으로 전체 파일을 강제로 다시로드하려면 실행하십시오 .:w ++ff=unix
유닉스 줄 끝을 사용하여 파일을 작성하기 위해 실행Ctrl+는 M내 창을 최소화하지만 Ctrl+는 Enter실제로 삽입 ^M
문자. 또한 Ctrl프레스 사이 에 키 를 들어 올리지 않도록해야했습니다 .
그래서 나를위한 해결책은 다음과 같습니다.
:%s/<Ctrl-V><Ctrl-Enter>/\r/g
경우 <Ctrl-V><Ctrl-Enter>
에 수단 길게 누름 Ctrl , 언론 자료 V, 언론과 릴리스 Enter, 다음 릴리스 Ctrl .
위의 솔루션은 기존 행 사이에 추가 행을 추가 \r
합니다 ^M
.
이를 방지하기 위해 ^M
문자를 바꾸지 않고 삭제하려고 합니다.
:%s/<Ctrl-V><Ctrl-Enter>//g
여기서 %
"이 버퍼에서" s
는 "대체"를 /
의미하고, "(다음과 같은 패턴 찾기")를 <Ctrl-V><Ctrl-Enter>
의미합니다. ^M
문자 를 얻기 위해 누르는 키 (위 참조), //
"아무것도 없음"(또는 "패턴 있음" 이 두 슬래시 사이 (비어 있음 ")이며 행에서 처음 나타나는 것과 반대로"전역 적으로 "를 의미 g
하는 플래그 입니다.
이것은 나를 위해 일했다 :
\n
줄 끝)vim에서 :
:set ff=unix
:w
나의 경우에는,
위의 아무것도 작동하지 않았으며, Mac에서 Linux 컴퓨터로 CSV 파일을 복사했으며 위의 모든 명령을 사용했지만 아래의 것 외에는 아무런 도움이되지 않았습니다.
tr "\015" "\n" < inputfile > outputfile
^ M 문자가 다음과 같은 줄 사이에 샌드 스위치 된 파일이 있습니다.
Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,
또는 dos2unix 및 unix2dos라는 오픈 소스 유틸리티가 있으며이 작업을 수행 할 수 있습니다. 리눅스 시스템에서는 아마도 기본적으로 설치 될 것입니다. Windows 시스템의 경우 http://www.bastet.com/ 에서 다운로드 할 수 있습니다.
이것은 나를 위해 일했다 :
:% s/\r\n/\r
^M
vim과 eclipse로 작업하는 동안 줄 바꿈을 많이 받으면 이러한 제안 중 어느 것도 효과가 없었습니다 . 나는 외부 사건을 겪었다 고 생각하지만 내가 한 사람에게 도움이 될 경우를 대비하여.
:%s/.$//g
그리고 그것은 내 문제를 정리했다
^M
원치 않는 줄 바꿈을 제공합니다. 이를 처리하기 위해 sed
다음과 같이 명령을 사용할 수 있습니다 .
sed 's/\r//g'
"이 기능은 점프 목록을 유지합니다
fun! Dos2unixFunction()
let _s=@/
let l = line(".")
let c = col(".")
try
set ff=unix
w!
"%s/\%x0d$//e
catch /E32:/
echo "Sorry, the file is not saved."
endtry
let @/=_s
call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()
나는 오후 \ n ctrl-v 012 (두 가지 모두 null을 제공함)로 고투하는 오후를 보냈습니다. 내가이 기사를 작성하기 전까지이 스레드를 통해 작업했습니다.
\r
나를 위해 잘 작동했습니다!
/),/s/),/)\r/g
다음과 같이 설정했습니다.
블랙리스트-추가 : i386 (0.4.1, 0.4.1 + nmu1), libmount1 : i386 (2.20.1-5.1, 2.20.1-5.2), libblkid1 : i386 (2.20.1-5.1, 2.20.1-5.2) , libapt-pkg4.12 : i386 (0.9.7.4, 0.9.7.5), nmap : i386 (6.00-0.1, 6.00-0.2), libsane-common : i386 (1.0.22-7.3,
이런 식으로 :
26 libwv-1.2-4 : i386 (1.2.9-3, 자동)
27 openjdk-6-jre-headless : i386 (6b24-1.11.4-3, 자동)
28 jed : i386 (0.99.19-2.1)
마법. 나는 진심으로 감사합니다