일관되지 않은 줄 끝을 정규화하면 Visual Studio의 의미는 무엇입니까?


238

Visual Studio는 때때로 다음과 같이 말합니다.

다음 파일의 줄 끝은 일치하지 않습니다. 줄 끝을 정규화 하시겠습니까?

그런 다음 Windows, Mac, Unix 및 두 가지 유니 코드 표준과 같은 다른 표준 또는 무언가로 드롭 다운을 제공합니다.

이것이 무엇을 의미하며 클릭하면 Yes어떻게됩니까?


Visual Studio는 이와 동일한 메시지를 보여 주지만 참조하는 "파일"은 실제로 폴더입니다! 그게 무슨 뜻이야?!
— 대령 패닉

Delphi를 사용하더라도 유틸리티는 모든 Windows 소스 코드에서 작동하지만 특정 확장자 (* .c 또는 * .h와 같은)의 모든 파일에 대한 디렉토리 세트를 통해 전체 디렉토리 또는 재귀 적 으로이 작업을 수행하는 작은 유틸리티를 만들었습니다. 파일. 소스 코드에 이진 (exe)이 포함되어 있습니다. 추가 라인 피드 (즉, 캐리지 리턴 누락) 또는 추가 캐리지 리턴 (즉, 누락 된 라인 피드)이있는 라인을보고합니다. docs.google.com/file/d/0B07SrKpE8ErmbHZ1SWkxT3RLczA/…
— Warren P

1
에 의해 발생할 수 있습니다 git. 참조 : stackoverflow.com/questions/170961/…
— Jess

2
드롭 다운에 '파일 / 프로젝트의 나머지 부분에서 가장 일반적인 줄 끝 유형이 더 좋습니다'라는 옵션이 있어야합니다.
— MetaGuru

답변:


213

일반적으로 캐리지 리턴 / 줄 바꿈 이외의 줄로 끝나는 줄이 있습니다. 웹 페이지에서 코드 편집기로 복사하여 붙여 넣을 때 종종 발생합니다.

줄 끝을 정규화하는 것은 모든 줄 끝 문자가 일치하는지 확인하는 것입니다. 한 줄이 끝나고 \r\n다른 줄 이 \r또는로 끝나는 것을 방지합니다.\n . 첫 번째는 Windows 라인 엔드 페어이고 다른 하나는 일반적으로 Mac 또는 Linux 파일에 사용됩니다.

Visual Studio에서 개발 중이므로 드롭 다운에서 "Windows"를 선택하고 싶을 것입니다. :-)


1
캐리지없이 줄이 어떻게 끝나는가?
— MetaGuru

23
플립이 비주얼 스튜디오에서 라인의 끝을 어떻게 관리하는지, 왜 모든 다른 유형을 인식하는지, 그것은 행복하고 닥쳐 야합니다.
— MetaGuru

53
아, 그러나 VS를 사용하여 Windows 이외의 것을 고치면 어떨까요? Linux 유틸리티 또는 간단한 C / C ++에 대한 빠른 수정 사항이며 CRLF를 추가하지 않으시겠습니까? 잠깐만, MS가 당신의 마음을 읽고 어떤 것을 사용해야하는지 알고 싶으십니까? <g> VS 팀은 어느 쪽이든 잘못 되었습니까? esh!
— Ken White

6
스냅 켄, 리눅스에서 컴파일 할 파일을 편집하려고하면 컴파일러가 필요로하는 줄 끝이 없으면 컴파일러가 질식하고 죽는다는 것을 알고 있습니다. 다행 대 VS 선택할 수 ... 감사합니다!
— MetaGuru

19
문제는 VS가 유닉스 라인 엔딩에 대처할 수 없다는 것이 아닙니다. 경고는 줄 끝이 일치하지 않음 을 나타냅니다. 즉 파일의 일부 줄은 CRLF이고 일부는 LF입니다. VS는 이에 대처하지만 툴 체인의 다른 응용 프로그램은 그렇지 않을 수 있으므로 경고합니다. 신경 쓰지 않는다면 옵션-> 환경-> 문서-> '로드시 일관된 줄 끝 검사'와 같은 경고를 끄십시오. 이 경고는 여러 플랫폼에서 제품을 작업 할 때 매우 유용합니다.
— the_mandrill

75

일부 줄은로 끝납니다 \n.

다른 줄은으로 끝납니다 \r\n.

Visual Studio에서는 모든 줄을 동일하게 만들 것을 제안합니다.


40

Visual Studio 2012를 사용하는 경우 :

메뉴 파일 → 고급 저장 옵션으로 이동 → 줄 끝 유형을 Windows (CR LF) 로 선택하십시오 .


1
이 옵션은 Visual Studio 2010 Ultimate 버전 10.0.40219.1 SP1Rel의 파일 메뉴에 나타나지 않습니다.
— DOK

1
@DOK, Visual Studio 2010 Premium 버전의 파일 메뉴에서 제공됩니다 !!
— Peter

4
옵션이 보이지 않으면 도구-> 사용자 정의로 이동하여 명령 탭으로 이동하여 명령을 추가하여 파일 메뉴를 사용자 정의 할 수 있습니다.
— Rob

모든 파일에 영향을주는 일반 설정이 있습니까? 솔루션의 모든 소스에 대해이 작업을 수행하는 것은 고통입니다.
— 클라우스

12

옵션을 켜거나 끄려면 메뉴 표시 줄 에서 아래 단계를 수행하십시오 .

도구 → 옵션 → 환경 → 문서 → 로드시 일관된 줄 끝 점검


7

편집중인 파일은 동일한 줄 끝을 사용하지 않는 다른 편집기로 편집되어 줄 끝이 혼합 된 파일이 만들어집니다.

줄 끝에 사용되는 ASCII 문자는 다음과 같습니다.

CR, 캐리지 리턴
LF, 줄 바꿈

Windows = CRLF
Mac OS 9 이하 = CR
Unix = LF


6

Wikipedia 줄 바꿈 기사 가 도움이 될 수 있습니다. 발췌문은 다음과 같습니다.

다른 줄 바꿈 규칙으로 인해 다른 유형의 시스템간에 전송 된 텍스트 파일이 잘못 표시되는 경우가 종종 있습니다. 예를 들어 Unix 또는 Apple Macintosh 시스템에서 시작된 파일은 Microsoft Windows에서 실행되는 일부 프로그램에서 하나의 긴 줄로 나타날 수 있습니다. 반대로, Unix 시스템의 Windows 컴퓨터에서 생성 된 파일을 볼 때 추가 CR은 ^ M 또는 각 줄의 끝 또는 두 번째 줄 바꿈으로 표시 될 수 있습니다.


5

예를 들어 일부 텍스트 줄은 <Carriage Return><Linefeed>(Windows 표준)으로 끝나고 일부는 <Linefeed>(유닉스 표준)으로 끝납니다 .

'예'를 클릭하면 소스 파일의 라인 끝이 모두 동일한 형식으로 변환됩니다.

이것은 줄 끝이 단순한 공백으로 간주되기 때문에 컴파일러와 아무런 차이가 없지만 다른 도구 (예 : 버전 제어 시스템의 'diff')와 약간의 차이가있을 수 있습니다.


4

그것은 단지 Visual Studio가 아닙니다 ... 파일, 컴파일러, 링커 등을 읽을 수있는 도구 일 것입니다.

일반적으로 (소프트웨어 개발을 위해) 우리는 멀티 플랫폼 라인 엔딩 문제를 받아들이지 만 버전 제어 소프트웨어가이를 처리하게합니다.


1
나는 동의한다. SCM 시스템에서 가장 잘 수행 할 수 있습니다. 당신은 SVN을 사용하는 경우도 볼 수 stackoverflow.com/questions/15687/...
— kgriffs

전적으로 동의합니다. 프로젝트에서 작업 중이고 Windows에서 팀 동료가 Mac을 사용하는 경우 어떻게됩니까? 우리는 지속적으로 CR을 CRLF로 바꾸고 다시 돌아올 것입니다. SCM이이를 추상화하도록하는 것이 가장 좋습니다. 대부분의 답변은 사람들이 스스로 작업하거나 코드 작업을하는 모든 사람이 Windows를 사용한다고 가정합니다.
— bytedev

3

웹에서 붙여 넣기를 할 때 줄 끝이 일치하지 않을 수 있습니다.
이 문제를 해결하기 위해 Visual Studio 확장명 "Line Endings Unifier"를 사용하면 파일을 저장하는 동안 줄 끝이 자동으로 일관성을 유지할 수 있습니다.

여기에 이미지 설명을 입력하십시오


2

파일이 저장 될 때 줄 끝 형식을 변환하는 Visual Studio 2008 용 추가 기능이 있습니다. http://grebulon.com/software/stripem.php에서 다운로드 할 수 있습니다.


svn에서 "일관되지 않은 줄 끝"오류가 발생할 때 도움이됩니다.
— kgriffs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.