이클립스와 Windows 개행


182

데스크탑이 충돌 할 때 Eclipse 작업 공간을 Linux에서 Windows로 이동해야했습니다. 일주일 후 나는 그것을 Linux로 다시 복사하고, 즐겁게 코드를 작성하고, CVS에 최선을 다한다. 그리고 슬프게도, Windows 줄 바꿈은 많은 파일을 오염 시켰으므로 CVS diff는 한 줄 또는 두 줄을 변경하더라도 전체 파일을 덤프합니다!

스크립트를 만들 수는 있지만 Eclipse 프로젝트 파일이 엉망이 될지 궁금합니다.


1
몇 번의 클릭만으로 프로젝트에서 일부 / 모든 파일의 줄 끝을 변환하는 경우 : stackoverflow.com/a/7019737/1364747
Teddy

답변:


358

여기여기에 언급 된대로 :

UTF-8텍스트 파일이 Windows OS에 고유하지 않은 형식으로 저장되고 이기종 개발자 데스크탑에서 가장 쉽게 공유 할 수 있도록 새 파일의 파일 인코딩 및 줄 끝을 Unix로 설정하십시오.

  • 작업 공간 환경 설정으로 이동하십시오 (일반 : 작업 공간).
  • 텍스트 파일 인코딩을 다음으로 변경하십시오. UTF-8
  • New Text File Line Delimiter를 Other로 변경하고 pick-list에서 Unix를 선택하십시오.

대체 텍스트

  • 참고 : 기존 파일의 줄 끝을 변환하려면 Eclipse에서 파일을 열고 File : Convert Line Delimiters to : Unix

: 패키지 탐색기에서을 선택한 다음 메뉴 항목으로 이동하여 기존 파일을 쉽게 변환 할 수 있습니다.File : Convert Line Delimiters to : Unix


2
바로 내가 찾던 것입니다! 나는 이미 새로운 파일로 변경했지만 변환 옵션이 눈을 놓쳤다. 감사합니다 VonC!
Vasu December

@Vasu : 천만에요 :). 아웃 라인보기 및 패키지 탐색기에는 종종 간과되는 다중 선택 요소에 대한 일부 기능이 있습니다.
VonC

훌륭한 글쓰기. Eclipse의 끔찍한 미로 환경 설정 대화 상자를 통해 직접 검색하면 나를 미치게 만들었습니다.
세린

39
패키지 탐색기에서 전체 프로젝트를 선택하면 File : Convert Line Delimiters to : Unix명령을 사용 하여 프로젝트의 모든 파일을 한 번에 "수정" 할 수 있습니다 .
탈 웨이스

11

한 줄의 변경으로도 동일한 일식 오염 된 파일이있었습니다. 솔루션 : Eclipse git settings-> Add Entry : Key : core.autocrlf 값 : true

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

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


이것은 대부분의 경우 OK 솔루션이지만 소스 파일에 대한 체크섬을 계산할 때 물릴 수 있습니다. 그러면 플랫폼마다 다릅니다.
zb226

8

편리한 bash 유틸리티 dos2unix가 있습니다-DOS / MAC to UNIX 텍스트 파일 형식 변환기입니다. 배포판에 아직 설치되지 않은 경우 패키지 관리자를 통해 쉽게 설치할 수 있습니다. dos2unix 매뉴얼 페이지


나는 일식 작업 공간에서 재귀 적 으로이 작업을 수행하는 스크립트를 작성하려고했습니다. 걱정은 일식 내부 프로젝트 파일을 손상시키는 것이 었습니다. 당신의 제안에 감사드립니다!
Vasu December

7

Eclipse 솔루션 및 다른 답변 에서 언급 한 도구 외에도 flip을 고려하십시오. . 일반적인 줄 바꿈과 Windows 줄 바꿈 사이에서 '플립'할 수 있으며 파일의 타임 스탬프 및 기타 통계를 보존하는 것과 같은 훌륭한 기능을 수행합니다.

다음과 같이 사용하여 문제를 해결할 수 있습니다.

find . -type f -not -path './.git/*' -exec flip -u {} \;

(git을 사용하는 경우 .git 디렉토리를 무시하는 절을 넣었지만 flip은 기본적으로 바이너리 파일을 무시하므로 필요하지 않을 수도 있습니다.)


참고 사항 ...이 명령은 Windows 사용자가 아닌 Linux 사용자를위한 것입니다. Windows find는 이런 식으로 작동하지 않습니다.
Brad

@ 브래드가 맞습니다. 그러나 Cygwin 포트 플립이 있습니다 : github.com/jaalto/cygwin-package--flip
Michael Scheper

3

시도해 볼 수 있습니다. 문제는 새 줄이 주어지면 Windows에서 캐리지 리턴과 줄 바꿈을 삽입한다는 것입니다. 유닉스 시스템은 단지 라인 피드를 삽입합니다. 따라서 캐리지 리턴 문자가 추가되어 일식이 개행을 망칠 수 있습니다.

프로젝트에서 하나 또는 두 개의 파일을 가져 와서 변환하십시오. 메모장 ++을 사용하여 그렇게 할 수 있습니다. 파일을 열고 형식-> Unix로 변환 (Windows를 사용하는 경우)으로 이동하십시오.

Linux에서는 명령 행에서 다음을 시도하십시오.

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java

약 10k 파일이 있습니다! 그래서 어떻게 든 자동화해야했습니다. 충고 감사합니다!
Vasu

CLI의 오타 오류 : sed -i 's/$`echo \\\r`//' yourfile.java그리고 자동화find . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
pdem

3

\r모든 하위 디렉토리의 CVS / * 파일에서 캐리지 리턴 ( ) 을 반복적으로 제거하려면 유닉스 쉘에서 다음을 실행하십시오.

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.