Tại sao vim tạo tập tin với kết thúc dòng DOS?


15

Tôi có

set fileformat=unix

trong tôi .vimrc, nhưng nếu tôi có thể tạo một tập tin trong vim(chạy trong Cygwin) nó vẫn tồn tại trong việc tạo ra các file DOS định dạng, và tôi phải chạy chúng thông qua dos2unixđể làm sạch chúng. (Tôi đoán tôi không thực sự đến, vì Git làm sạch chúng đối với tôi, nhưng nó chỉ làm tôi phát cáu đến chết mà một trình soạn thảo văn bản Unix, mà tôi đã đặc biệt hướng dẫn để sử dụng Unix kết thúc dòng, làm ô nhiễm chúng với rác thêm .)

Tại sao điều này sẽ xảy ra? Làm thế nào tôi có thể sửa chữa nó? (Và bằng cách "sửa chữa" Tôi không có nghĩa là một cái gì đó yêu cầu tôi chuyển đổi từng tệp riêng lẻ. Đó không phải là một sửa chữa. Đó là những gì hoàn toàn bị hỏng.)


Tôi cá rằng đây là một vấn đề của Cygwin. Có một tùy chọn trong cygwin để chọn kiểu kết thúc dòng nhưng tôi không thấy bất kỳ bằng chứng nào nó thực sự hoạt động. Trường đại học của tôi sử dụng Eclipse với cygwin cho bộ sưu tập trình biên dịch GNU và tôi đã gặp phải một hành vi kỳ lạ getlinemà hóa ra là Cygwin đang làm điều gì đó kỳ lạ. Kết quả là CR+LFthay vì Unix LFhoặc thậm chí là một phong cách dos LF+CR. Bạn nên kiểm tra và xem kiểu kết thúc dòng nào bạn đã cấu hình trong cygwin nhưng YMMV. Xem thêm cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Matt

@ Matt: DOS / Windows không sử dụng CR+LF, không phải LF+CR.
echristopherson

Tôi sợ tôi sẽ trao đổi những thứ đó nếu tôi không kiểm tra lại, đã hơn một học kỳ kể từ khi tôi gặp vấn đề đó. Các kết thúc dòng khác nhau khi chạy trong cygwin và khi chạy ở dấu nhắc dos và tôi nhớ rằng nó bị thuyết phục bởi nó ngược với những gì bạn mong đợi từ DOS nhưng như bạn có thể thấy chúng dễ dàng chuyển đổi.
Matt

Bạn có chắc chắn rằng .vimrc này thậm chí còn được đọc không? Hãy thử thực hiện một lỗi cố ý và xem nếu vim chọn nó.
một CVn

@ MichaelKjorling: yeah, tôi đã thử nghiệm, và nó đang được đọc. Tôi đã nhận xét set numberdòng của tôi , và nó có hiệu lực, và không bỏ sót nó và nó có hiệu lực. Tôi cũng đã thêm "blah blah blah" ở phía dưới và nhận được "Nhấn ENTER hoặc gõ lệnh để tiếp tục" khi tôi mở bất cứ thứ gì, nhưng kỳ lạ là không có thông báo lỗi trước đó (trừ khi đó là chữ màu đen trên nền đen).
iconoclast

Câu trả lời:


21

Chỉ cài đặt có fileformatthể không đủ, tùy thuộc vào một vài yếu tố. Thử đi:

set fileformat=unix
set fileformats=unix,dos
"set nobinary

Để hiểu những gì chúng làm, hãy xem :help fileformats, v.v.

Tôi nghĩ rằng tôi có thể tái tạo các vấn đề của bạn, bằng cách sử dụng vim.exeđược cung cấp bởi gittrong các cửa sổ. Sử dụng các cài đặt ở trên đã khắc phục sự cố cho tôi. Trong ví dụ set nobinaryđược bình luận vì tôi không nghĩ bạn cần nó, tôi đã để nó ở đó như một mẹo có thể giúp ích trong trường hợp bạn cần điều tra thêm.

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.