2011-03-18 2 views
6

어떤 파일이나 라인 종말이 유닉스가 아니라는 어떤 종류의 표시에 어떤 ^M (캐리지 리턴?)이 있는지 감지하는 일종의 플러그인/vi-code를 찾고 있는데, 그렇다면 그 파일을 제거하거나 파일에 dos2unix을 실행하십시오.이미 유닉스가 아니라면 열려있는 텍스트 파일의 라인 엔딩을 유닉스로 자동 변환하도록 어떻게 설치할 수 있습니까?

파일 열기 전/동안 자동으로 작업해야합니다.

또한 라인 엔딩을 수동으로 변환하는 방법을 제안하려는 사람들에게 하나의 대답은 :set ff=unix을 가리 킵니다.하지만 유닉스 파일에서는 ^M을 죽이지 않습니다.

문자가 ^과 일치하지 않으므로 :%s/^M//g을 사용하는 것이 트릭이 아닙니다.

+1

텍스트 또는 검색 & 바꾸기에 관계없이^M을 입력하려면 'Ctrl-V', 'Ctrl-M'을 입력하십시오. – MikeyB

+0

': % s/^ M // g '을 사용하는 속임수는'^ M'을''로 입력하는 것입니다. –

+0

패턴에 원시 제어 문자를 사용하지 않으려면'\ r'을 사용하십시오. 나는 개인적으로 명령 모드에서 타이핑 할 때''을 선호하고 스크립트를 작성할 때'\ r'을 선호한다. – ZyX

답변

1

이 git 플래그가 붙어 있기 때문에 git이 자동으로 체크 인/체크 아웃 할 때 줄 끝을 변환 할 수 있습니다 (http://www.kernel.org/pub/software/scm/git/docs/git-config.html)

ps. 당신이 열려있는 파일에서^M을 교체 할 경우 교체의 M^일에 트릭

:%s/{Ctrl+V}{Ctrl+M}//{Enter}

+0

죄송합니다. git로 플래그를 지정하지 않았습니다 ... 어떤 사람이 내게 git 질문을하고 있었기 때문에 내 마음에 자식이 있습니다. 이것은 좋은 제안이지만 VCS에서이 작업을 수행 할 수는 있지만 Vim 응답은 여전히 ​​좋을 것입니다. –

+0

퍼팅 안 함 : 시작 파일에 set ff = unix가 작동합니까? 아니면 다른 파일이 이미 문자^M을 파일에 넣은이 파일입니까? –

+0

후자는 파일 형식이 유닉스인데도 사용자가 파일에^M 문자를 넣는 파일을 발견했습니다. –

0

입니다, 당신에 다음과 같은 autocmd가의 vimrc은 도움이 될 수 :

au BufReadPost * %s/^M//g 

^M을 삽입하는 것은 앞의 대답에 나와 있습니다.

3

커서를 원래 위치로 유지하기 때문에 아래 기능이 재미 있습니다. vimrc

" dos2unix ^M 
fun! Dos2unixFunction() 
    let [email protected]/ 
    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() 
au BufReadPost * keepjumps call Dos2unixFunction() 
관련 문제