2012-12-20 4 views
6

vim의 :source 명령을 dos 행이 끝나는 vimscript 파일에 사용하면 ^M 문자를 처리 할 수 ​​없다는 오류가 발생합니다.vim : source에서 다른 라인 엔딩을 허용 하시겠습니까?

^M 문자는 dos 행 끝 부분이지만 UNIX 유닉스 끝 부분은 아닙니다. 그래서 그것은 유닉스 파일 포맷을 사용하는 파일 :source을 시도하고있다.

것은, :set fileformats=unix,dos 설정되어 있습니다. 열기 파일을 편집하면 (:source:-이 아님) 줄 끝 문제가 없습니다. Vim은 순수 dos 행 끝으로 파일을보고 fileformats에 따라 적절하게 조정합니다.

:help fileformats은 당신이 :set fileformats=unix,dos이있는 경우 도스 시스템에 정력이 사용해야하는의 임시 검출을 수행하는 barest 단서를 제공 (와 무관 한 디테일로,이 :source 탐지 취급보다 다르게 라인 엔딩을 혼합 개봉 개 파일).

나는 현대식 맥 시스템을 사용하고 있는데, 어떻게하면 :source 도스 라인 결말 파일을 얻을 수 있습니까?

답변

6

이것은 :h :source_crnl에서 논의됩니다.

맥 OS X를 포함 UNIX 시스템에

, 예를 오류를 올릴 것이다에는 자동 CRLF 검출하고 라인 끝에 실제 CR 없다 매핑 . 도움말에서 :

다른 시스템에서 Vim은 ": source"파일이 < NL>으로 끝나기를 기대합니다. 이들은 항상 작동합니다. < CR> < NL> < EOL> (예 : MS-DOS에서 만든 파일) 파일을 사용하는 경우 모든 줄의 후행 < CR>이 표시됩니다.

최상의 호환성을 위해 Vim 스크립트 파일에 항상 NL 개행 문자를 사용하는 것이 가장 좋습니다. 스크립트의 첫 번째 줄이 어떤 이유에서 CR로 끝나지 않고 'fileformats'이 비어 있지 않으면 (기본값은 비어 있지 않음) 모든 스크립트가 항상 작동합니다.

간단히 말하면, 줄 ​​끝 문자를 LF로 변환하십시오.

+0

이 변환을하는 쉬운 방법은': set ff = unix'를 수행하고 파일을 저장하는 것입니다. ... 만약': set ff? '가'dos'를 반환한다면 ... –

+1

@ dash-tom-bang 아니면 하나의 명령으로': w ++ ff = unix'를 쓸 수 있습니다. – glts

관련 문제