Không thêm dòng mới vào cuối tệp


10

Vim luôn thêm một dòng mới vào cuối các tệp của tôi khi lưu và nó gây ra lỗi trong các tập lệnh PHP của tôi.

Làm thế nào tôi có thể làm cho vim không thêm dòng mới này vào lưu?


7
"Nó đang gây ra lỗi trong các tập lệnh PHP của tôi" -> Điều này có lạ không? PHP nên hoạt động tốt với một dòng mới. Trong thực tế, điều này là khá nhiều tiêu chuẩn. Có lẽ bạn có một dòng trống sau khi ?>PHP xuất ra trình duyệt (gây ra "tiêu đề đã được gửi" -error)? Bạn không cần một dấu vết ?>, và thường nên bỏ nó ra để ngăn chặn chính xác vấn đề này.
Martin Tournoij

Tôi đoán đó là sai lệch. Kịch bản của chúng tôi giải thích bất kỳ đầu ra là một lỗi.
Dan


1
Không. Vim không thêm một dòng mới.
romainl

Câu trả lời:


11

Đây không phải là một dòng trống hoàn toàn, chỉ là một dòng mới cuối cùng ở cuối dòng cuối cùng. Các công cụ Unix (như di sản của Vim) nhấn mạnh vào việc thêm vào đó, trong khi hệ điều hành Windows không quá nghiêm ngặt. Bạn có thể đọc thêm về điều đó tại sao các tệp nên kết thúc bằng một dòng mới?

Thật không may, nó khá phức tạp để ngăn Vim viết dòng mới cuối cùng. Plugin PreserveNoEOL của tôi có thể làm điều này. Để thảo luận về các phương pháp tiếp cận, hãy xem VIM Vô hiệu hóa dòng mới tự động ở cuối tệp .


Chỉ cần lưu ý cho độc giả tương lai rằng trong khi câu trả lời này là tuyệt vời vào thời điểm đó, trong các phiên bản gần đây hơn của Vim có một giải pháp đơn giản hơn nhiều trong một câu trả lời được đăng sau đó .
Giàu

10

Trong các phiên bản mới của Vim cuối cùng cũng có một tùy chọn cho việc này

Vim 7.4.785 thêm tùy chọn 'fixeol' có thể bị vô hiệu hóa để tự động bảo vệ mọi EOL bị thiếu ở cuối tệp.

(xem trang wiki: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )

Trong ~/.vimrcdòng của bạn thêm dòng này:

set nofixeol

Khởi chạy lại vim, bây giờ không nên thêm dòng mới vào cuối tệp.

(chỉ hoạt động kể từ phiên bản vim 7.4.785)


0

Bạn đã thử mở tệp ở chế độ nhị phân chưa? Hãy thử vim -b file_name. Nó không nên thêm dòng mới vào cuối tập tin.


Tôi đã thử làm điều này, và sau đó sử dụng xxdđể xác minh, nhưng nó vẫn thêm một linefeed ( 0a) ngay cả trong chế độ nhị phân.
James
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.