2009-02-16 16 views
187

Visual Studio thỉnh thoảng cho tôi biết:Visual Studio có nghĩa là gì bằng cách chuẩn hóa các kết thúc dòng không phù hợp?

Kết thúc dòng trong các tệp sau không nhất quán. Bạn có muốn chuẩn hóa dòng kết thúc không?

Sau đó, trình đơn thả xuống với các tiêu chuẩn khác nhau, chẳng hạn như Windows, Mac, Unix và một vài Unicode.

Điều này có ý nghĩa gì và điều gì sẽ xảy ra nếu tôi nhấp vào Yes?

+0

Visual Studio hiển thị cho tôi cùng một thông báo này, nhưng "tệp" mà nó đề cập đến trên thực tế là một thư mục! Điều đó nghĩa là gì?! –

+0

Tôi đã tạo một tiện ích nhỏ để thực hiện điều này cho toàn bộ thư mục hoặc đệ quy thông qua một tập hợp các thư mục cho tất cả các tệp mở rộng cụ thể (như * .c hoặc * .h), mặc dù tôi sử dụng Delphi. các tệp mã. Mã nguồn bao gồm dấu cộng (exe). Nó sẽ báo cáo những dòng nào có thêm dòng dữ liệu (ví dụ: thiếu số trả về vận chuyển) hoặc trả về vận chuyển bổ sung (nghĩa là dòng dữ liệu bị thiếu). https://docs.google.com/file/d/0B07SrKpE8ErmbHZ1SWkxT3RLczA/edit?usp=sharing –

+1

Có thể do 'git' gây ra. Xem thêm: http://stackoverflow.com/questions/170961/whats-the-best-crlf-carriage-return-line-feed-handling-strategy-with-git – Jess

Trả lời

176

Điều đó thường có nghĩa là bạn có các dòng kết thúc bằng một thứ khác với cặp trả lại dòng/dòng truyền tải. Nó thường xảy ra khi bạn sao chép và dán từ một trang web vào trình soạn thảo mã.

Bình thường hóa đầu cuối dòng chỉ đảm bảo rằng tất cả các ký tự kết thúc dòng đều nhất quán. Nó ngăn một dòng kết thúc bằng \r\n và một dòng khác kết thúc bằng \r hoặc \n; đầu tiên là cặp kết thúc dòng Windows, trong khi những cái khác thường được sử dụng cho các tệp Mac hoặc Linux.

Vì bạn đang phát triển trong Visual Studio, rõ ràng bạn sẽ muốn chọn "Windows" từ trình đơn thả xuống. :-)

+1

làm thế nào để dòng kết thúc mà không có một vận chuyển trở lại ...? – BigOmega

+5

Chỉ với một dòng cấp dữ liệu. – user64075

+15

Vậy tại sao chiếc máy ảnh trực quan lại quan tâm đến cách các dòng kết thúc, nó dường như nhận ra tất cả các loại khác nhau, nó chỉ nên được hạnh phúc và đóng cửa. – BigOmega

68

Một số dòng kết thúc bằng \n.

Một số dòng khác kết thúc bằng \r\n.

Visual Studio đề xuất bạn làm cho tất cả các dòng kết thúc giống nhau.

7

Tệp bạn đang chỉnh sửa đã được chỉnh sửa với một số trình chỉnh sửa khác không sử dụng cùng một dòng kết thúc, dẫn đến tệp có đuôi kết thúc.

Các ký tự ASCII được sử dụng cho dòng cuối là:

CR, vận chuyển trở lại
LF, Line Thức ăn

của Windows = CRLF
Mac OS 9 hoặc sớm hơn = CR
Unix = LF

4

Wikipedia newline article có thể giúp bạn. Dưới đây là một đoạn trích:

Quy ước dòng mới khác thường khiến các tệp văn bản được chuyển giữa các hệ thống khác nhau được hiển thị không chính xác. Ví dụ: các tệp có nguồn gốc trên Hệ thống Macintosh hoặc Apple Macintosh có thể xuất hiện dưới dạng một dòng dài trên một số chương trình chạy trên Microsoft Windows. Ngược lại, khi xem tệp bắt nguồn từ máy tính Windows trên hệ thống Unix , CR bổ sung có thể được hiển thị dưới dạng^M hoặc ở cuối mỗi dòng hoặc dưới dạng ngắt dòng thứ hai .

4

Nó có nghĩa là, ví dụ, một số đường dây của bạn văn bản với một (tiêu chuẩn Windows) <Carriage Return><Linefeed>, và một số cuối chỉ với một (tiêu chuẩn Unix) <Linefeed>.

Nếu bạn nhấp vào 'có', các dòng cuối cùng trong tệp nguồn của bạn sẽ được chuyển đổi thành có cùng định dạng.

Điều này sẽ không tạo ra bất kỳ sự khác biệt nào với trình biên dịch (vì kết thúc dòng được tính là khoảng trắng), nhưng có thể tạo sự khác biệt cho các công cụ khác (ví dụ: 'diff' trên hệ thống kiểm soát phiên bản của bạn).

2

Có một bổ trợ cho Visual Studio 2008 chuyển đổi kết thúc của định dạng đường khi tệp được lưu. Bạn có thể tải xuống tại đây: http://grebulon.com/software/stripem.php

+0

Điều này có thể hữu ích khi bạn nhận được lỗi "kết thúc dòng không phù hợp" từ svn. – kgriffs

4

Nó không chỉ là Visual Studio ... Nó sẽ là bất kỳ công cụ nào đọc tệp, trình biên dịch, liên kết, v.v ... mà sẽ phải có khả năng xử lý nó.

Nói chung (để phát triển phần mềm), chúng tôi chấp nhận vấn đề kết thúc dòng đa nền tảng, nhưng hãy để phần mềm điều khiển phiên bản xử lý nó.

+1

Tôi đồng ý. Tốt nhất là để hệ thống SCM của bạn làm điều đó. Nếu bạn đang sử dụng svn, xem thêm http://stackoverflow.com/questions/15687/how-can-i-convert-all-line-endings-to-crlf-lf-or-cr-during-svn-operations – kgriffs

+0

Hoàn toàn đồng ý. Điều gì sẽ xảy ra nếu tôi đang làm việc trên một dự án và tôi trên Windows và đồng đội của tôi đang sử dụng Mac. Chúng tôi sẽ liên tục thay đổi CR thành CRLF và ngược lại. Tốt nhất để cho SCM trừu tượng đi. Hầu hết các câu trả lời chỉ giả định rằng mọi người đang làm việc trên riêng của họ hoặc tất cả mọi người làm việc trên mã đang sử dụng Windows. – nashwan

40

Nếu bạn đang sử dụng Visual Studio     2012:

Đến đơn filenâng cao Save Options → chọn kết thúc dòng loại như Windows (CR LF).

+1

Tùy chọn đó không xuất hiện trên menu Tệp của tôi cho Visual Studio 2010 Phiên bản Cuối cùng 10.0.40219.1 SP1Rel của tôi. – DOK

+1

@DOK, trên menu Tệp của tôi tại phiên bản Visual Studio 2010 Premium !! – Peter

+3

Nếu bạn không thể thấy tùy chọn, bạn có thể tùy chỉnh trình đơn tệp của mình bằng cách vào Tools-> Customize, chuyển đến tab lệnh và thêm lệnh. – Rob

6

Để bật tùy chọn ON/OFF, hãy làm theo các bước dưới đây từ đơn thanh:

cụTùy chọnMôi trườngDocumentsKiểm tra kết thúc dòng phù hợp trên tải

Các vấn đề liên quan