Dòng mới của Eclipse và Windows


182

Tôi đã phải chuyển không gian làm việc Eclipse của tôi từ Linux sang Windows khi máy tính để bàn của tôi bị hỏng. Một tuần sau tôi sao chép nó trở lại Linux, mã vui vẻ, cam kết với CVS. Và than ôi, dòng mới của windows đã làm ô nhiễm nhiều tệp, vì vậy CVS diff bỏ toàn bộ tệp, ngay cả khi tôi thay đổi một hoặc hai dòng!

Tôi có thể nấu một tập lệnh, nhưng tôi tự hỏi liệu nó có làm hỏng các tệp dự án Eclipse của tôi không.


1
Để chuyển đổi kết thúc dòng cho một vài / tất cả các tệp trong một dự án chỉ bằng vài cú nhấp chuột: stackoverflow.com/a/7019737/1364747
Teddy

Câu trả lời:


358

Như đã đề cập ở đâyđây :

Đặt mã hóa tệp thành UTF-8và kết thúc dòng cho các tệp mới thành Unix, để các tệp văn bản được lưu ở định dạng không dành riêng cho HĐH Windows và được chia sẻ dễ dàng nhất trên các máy tính để bàn dành cho nhà phát triển không đồng nhất:

  • Điều hướng đến các tùy chọn Không gian làm việc (Chung: Không gian làm việc)
  • Thay đổi mã hóa tệp văn bản thành UTF-8
  • Thay đổi Dấu phân cách dòng tệp văn bản mới thành Khác và chọn Unix từ danh sách chọn

văn bản thay thế

  • Lưu ý: để chuyển đổi các kết thúc dòng của một tệp hiện có, hãy mở tệp trong Eclipse và chọn File : Convert Line Delimiters to : Unix

Mẹo : Bạn có thể dễ dàng chuyển đổi tệp hiện có bằng cách chọn sau đó trong Gói Explorer, sau đó chuyển đến mục menuFile : Convert Line Delimiters to : Unix


2
Đó chính xác là những gì tôi đang tìm kiếm! Tôi đã thay đổi nó cho các tập tin mới, nhưng tùy chọn để chuyển đổi - bị mất mắt. Cảm ơn VonC!
Vasu

@Vasu: bạn được chào đón :). Khung nhìn Outline và Gói Explorer chứa một số tính năng cho các yếu tố đa lựa chọn thường bị bỏ qua.
VonC

Tuyệt vời viết. Tự tìm kiếm điều này thông qua hộp thoại tùy chọn mê cung khủng khiếp của Eclipse đã khiến tôi phát điên.
Cerin

39
Nếu bạn chọn toàn bộ dự án trong gói thám hiểm, bạn có thể sử dụng File : Convert Line Delimiters to : Unixlệnh để "sửa" tất cả các tệp trong dự án cùng một lúc.
Tal Weiss

11

Tôi đã có cùng một tập tin ô nhiễm nhật thực ngay cả với một dòng thay đổi. Giải pháp: Cài đặt git Eclipse -> Thêm mục nhập: Khóa: core.autocrlf Giá trị: true

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


Mặc dù đây là một giải pháp OK cho hầu hết các trường hợp, nó có thể cắn bạn - ví dụ như khi bạn tính toán tổng kiểm tra trên các tệp nguồn. Những điều này sau đó sẽ khác nhau từ nền tảng để nền tảng.
zb226

8

Có một tiện ích bash tiện dụng - dos2unix- đó là một trình chuyển đổi định dạng tệp văn bản DOS / MAC sang UNIX, nếu chưa được cài đặt trên bản phân phối của bạn, có thể dễ dàng cài đặt thông qua trình quản lý gói. trang người đàn ông dos2unix


Tôi đã dự định viết một kịch bản để đệ quy làm điều này trên không gian làm việc nhật thực của tôi. Chỉ lo là làm hỏng bất kỳ tập tin dự án nội bộ nhật thực. Cảm ơn lời đề nghị của bạn!
Vasu

7

Ngoài các giải pháp Eclipse và công cụ được đề cập trong câu trả lời khác , hãy xem xét lật . Nó có thể 'lật' một trong hai cách giữa các ngắt dòng thông thường và Windows và thực hiện những điều hay như giữ dấu thời gian của tệp và các số liệu thống kê khác.

Bạn có thể sử dụng nó như thế này để giải quyết vấn đề của bạn:

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

(Tôi đặt một mệnh đề để bỏ qua thư mục .git của bạn, trong trường hợp bạn sử dụng git, nhưng vì lật mặc định bỏ qua các tệp nhị phân, bạn có thể không cần điều này.)


Chỉ cần một lưu ý ... lệnh này dành cho người dùng Linux, không phải người dùng Windows. Windows findkhông hoạt động theo cách này.
Brad

@Brad đúng. Tuy nhiên, tồn tại một cổng Cygwin của flip: github.com/jaalto/cygwin-package--flip
Michael Scheper

3

Bạn có thể thử nó. Vấn đề là Windows chèn trở lại vận chuyển cũng như nguồn cấp dữ liệu khi được cung cấp một dòng mới. Các hệ thống Unix chỉ cần chèn một nguồn cấp dữ liệu. Vì vậy, nhân vật trở về xe ngựa thêm có thể là lý do tại sao nhật thực của bạn gây rối với các dòng mới.

Lấy một hoặc hai tệp từ dự án của bạn và chuyển đổi chúng. Bạn có thể sử dụng Notepad ++ để làm như vậy. Chỉ cần mở tệp, đi đến Định dạng-> Chuyển đổi sang Unix (khi bạn đang sử dụng windows).

Trong Linux, chỉ cần thử điều này trên một dòng lệnh:

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

Tôi có khoảng 10k file! Vì vậy, phải tự động hóa nó bằng cách nào đó. Cảm ơn vì lời khuyên!
Vasu

Một số lỗi đánh máy trên CLI của bạn: sed -i 's/$`echo \\\r`//' yourfile.javavà để tự động hóa nófind . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
pdem

3

Để loại bỏ đệ quy dòng trả về ( \r) khỏi các tệp CVS / * trong tất cả các thư mục con, hãy chạy phần sau trong một vỏ unix:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.