บรรทัดใหม่ของ Eclipse และ Windows


182

ฉันต้องย้ายพื้นที่ทำงาน Eclipse ของฉันจาก Linux ไปยัง Windows เมื่อเดสก์ท็อปของฉันล้มเหลว หนึ่งสัปดาห์ต่อมาฉันก็คัดลอกกลับไปที่ Linux, รหัสอย่างมีความสุข, ส่งไปยัง CVS และอนิจจาหน้าต่างขึ้นบรรทัดใหม่มีมลพิษหลายไฟล์ดังนั้น CVS จึงทิ้งไฟล์ทั้งหมดแม้เมื่อฉันเปลี่ยนบรรทัดหรือสองบรรทัด!

ฉันสามารถปรุงสคริปต์ได้ แต่ฉันสงสัยว่ามันจะทำให้ไฟล์โครงการ Eclipse ของฉันยุ่งเหยิงหรือไม่


1
สำหรับการแปลงจุดสิ้นสุดบรรทัดสำหรับไฟล์จำนวนน้อย / ทั้งหมดในโครงการเพียงไม่กี่คลิก: stackoverflow.com/a/7019737/1364747
Teddy

คำตอบ:


358

ดังที่กล่าวไว้ที่นี่และที่นี่ :

ตั้งค่าการเข้ารหัสไฟล์UTF-8และการสิ้นสุดบรรทัดสำหรับไฟล์ใหม่เป็น Unix เพื่อให้ไฟล์ข้อความถูกบันทึกในรูปแบบที่ไม่เฉพาะเจาะจงกับระบบปฏิบัติการ Windows และแชร์ได้อย่างง่ายดายที่สุดบนเดสก์ท็อปนักพัฒนาที่ต่างกัน:

  • นำทางไปยังการตั้งค่าพื้นที่ทำงาน (ทั่วไป: พื้นที่ทำงาน)
  • เปลี่ยนการเข้ารหัสไฟล์ข้อความเป็น UTF-8
  • เปลี่ยน Delimiter บรรทัดไฟล์ข้อความใหม่เป็น Other และเลือก Unix จากรายการรับ

ข้อความแสดงแทน

  • หมายเหตุ: ในการแปลงการสิ้นสุดบรรทัดของไฟล์ที่มีอยู่ให้เปิดไฟล์ใน Eclipse และเลือก File : Convert Line Delimiters to : Unix

เคล็ดลับ : คุณสามารถแปลงไฟล์ที่มีอยู่ได้อย่างง่ายดายโดยเลือกจากใน Package Explorer จากนั้นไปที่รายการเมนูFile : Convert Line Delimiters to : Unix


2
นั่นคือสิ่งที่ฉันกำลังมองหา! ฉันได้เปลี่ยนมันสำหรับไฟล์ใหม่แล้ว แต่ตัวเลือกในการแปลง - พลาดตาของฉัน ขอบคุณ VonC!
Vasu

@Vasu: ไม่เป็นไร :) มุมมองโครงร่างและ Package Explorer มีคุณลักษณะบางอย่างสำหรับองค์ประกอบที่เลือกหลายตัวซึ่งมักถูกมองข้าม
VonC

เขียนดีมาก การค้นหาสิ่งนี้ด้วยตัวเองผ่านกล่องโต้ตอบการตั้งค่าเขาวงกตที่น่ากลัวของ Eclipse ทำให้ฉันเสียสติ
Cerin

39
หากคุณเลือกโครงการทั้งหมดในแพ็คเกจ explorer คุณสามารถใช้File : Convert Line Delimiters to : Unixคำสั่งเพื่อ "แก้ไข" ไฟล์ทั้งหมดในโครงการได้ในครั้งเดียว
Tal Weiss

11

ฉันมีไฟล์มลภาวะเดียวกันกับ eclipse แม้จะเปลี่ยนไปหนึ่งบรรทัด โซลูชัน: การตั้งค่า Eclipse git -> เพิ่มรายการ: คีย์: core.autocrlf ค่า: จริง

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


แม้ว่านี่จะเป็นวิธีแก้ปัญหาสำหรับกรณีส่วนใหญ่ แต่ก็สามารถกัดคุณได้ตัวอย่างเช่นเมื่อคุณคำนวณ checksums ผ่านไฟล์ต้นฉบับ สิ่งเหล่านี้จะแตกต่างจากแพลตฟอร์มหนึ่งไปอีกแพลตฟอร์ม
zb226

8

มียูทิลิตีทุบตีที่มีประโยชน์dos2unix- ซึ่งเป็นตัวแปลงรูปแบบไฟล์ข้อความ DOS / MAC เป็น UNIX ว่าหากยังไม่ได้ติดตั้งใน distro ของคุณควรจะสามารถติดตั้งได้อย่างง่ายดายผ่านตัวจัดการแพคเกจ หน้ามนุษย์ dos2unix


ฉันวางแผนที่จะเขียนสคริปต์เพื่อทำสิ่งนี้ซ้ำในเวิร์กสเปซคราสของฉัน กังวลเพียงอย่างเดียวคือทำให้ไฟล์โครงการภายในของ eclipse เสียหาย ขอบคุณสำหรับคำแนะนำของคุณ!
Vasu

7

นอกจากนี้ยังมีการแก้ปัญหา Eclipse และเครื่องมือที่กล่าวถึงในคำตอบอื่นพิจารณาพลิก มันสามารถ 'พลิก' ทั้งสองวิธีระหว่าง linebreaks ปกติและ Windows และทำสิ่งที่ดีเช่นเก็บบันทึกเวลาของไฟล์และสถิติอื่น ๆ

คุณสามารถใช้สิ่งนี้เพื่อแก้ปัญหาของคุณ:

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

(ฉันใส่ส่วนคำสั่งเพื่อละเว้นไดเรกทอรี. git ของคุณในกรณีที่คุณใช้ git แต่เนื่องจาก flip จะไม่สนใจไฟล์ไบนารีโดยปริยายคุณอาจไม่จำเป็นต้องใช้)


เพียงแค่ทราบ ... คำสั่งนี้สำหรับผู้ใช้ Linux ไม่ใช่ผู้ใช้ Windows Windows findไม่ทำงานในลักษณะนี้
แบรด

@Brad ถูกต้อง อย่างไรก็ตามมีพอร์ตการพลิก Cygwin อยู่: github.com/jaalto/cygwin-package--flip
Michael Scheper

3

คุณสามารถลองดู ปัญหาคือ Windows จะแทรกการขึ้นบรรทัดใหม่และการป้อนบรรทัดเมื่อมีการขึ้นบรรทัดใหม่ ระบบ Unix เพียงแค่แทรกบรรทัดฟีด ดังนั้นอักขระพิเศษการขึ้นบรรทัดใหม่อาจเป็นสาเหตุที่ทำให้ eclipse ของคุณยุ่งกับการขึ้นบรรทัดใหม่

คว้าหนึ่งหรือสองไฟล์จากโครงการของคุณและแปลง คุณสามารถใช้ Notepad ++ เพื่อทำเช่นนั้น เพียงแค่เปิดไฟล์ไปที่ Format-> Convert เป็น 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

หากต้องการลบ carriage return ( \r) ออกจากไฟล์ CVS / * ในไดเร็กทอรีย่อยทั้งหมดให้รันคำสั่งต่อไปนี้ใน unix shell:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.