Vi trên Linux: hiển thị ^ M dòng kết thúc cho các tệp định dạng DOS


10

Trên Solaris, nếu bạn mở một tệp trong vi có kết thúc dòng Windows, thì tệp này hiển thị dưới dạng ^ M ở cuối mỗi dòng.

Trên Linux, vi thông minh hơn và hiểu định dạng tệp Windows và không hiển thị ^ M.

Có cài đặt nào để khiến Linux vi hoạt động giống như Solaris về mặt này không?

Một vấn đề phổ biến đối với chúng tôi là sao chép tập lệnh shell ra khỏi hộp dev (Windows) và quên mất dos2unix, và sau đó bị nhầm lẫn khi nó không hoạt động đúng. Trên Solaris, vấn đề là rõ ràng ngay khi bạn vi tập tin, nhưng không phải trên Linux.

Cảm ơn.


Trên Linux, vi thường là Bram Moolenaar của vim , tôi hy vọng các vi trên Solaris là Bill Joy vi , ban đầu, xác thực nhưng ít có khả năng.
RedGrittyBrick

Theo tôi vim, theo mặc định tôi thường thấy không ^M, nhưng đôi khi có một cái ở cuối tập tin.
chiến thắng

Câu trả lời:


10

Hãy thử :set ffs=unixkhi bắt đầu vi (hoặc đặt làm mặc định trong vimrc) sẽ hiển thị tất cả các ký tự CR là ^M.

vi tự động đoán định dạng sẽ sử dụng dựa trên việc nó có gặp các dòng kết thúc chỉ trong LF hoặc cả CR / LF hay không.


2
@RedGrittyBrick - Trên hệ thống của tôi, :set listhiển thị $ở cuối tất cả các dòng (định dạng Unix & DOS), vì vậy không giúp phân biệt giữa hai dòng.
sss

@sss: Lỗi của tôi, tôi sẽ xóa bình luận.
RedGrittyBrick

2
@gman - Lệnh này không hoạt động chính xác với tôi - Tôi đã nhận Not an editor command: ffs=unix- nhưng đặt tôi đi đúng hướng. Chạy :set ffs=unixvới tệp mở trong vi không hoạt động - không có lỗi nhưng không có gì xảy ra. Tôi đặt set ffs=unixtập tin .vimrc của tôi và nó đã hoạt động.
sss

Tôi đã trải nghiệm chính xác điều tương tự như @sss
SSH vào

Do đó làm hỏng cấu hình người dùng được chuẩn bị cẩn thận. Tôi rất có thể muốn ffschính xác như vậy. Nhưng hãy xem câu trả lời từ @wvducky.
fork0

2

Để hiển thị kết thúc dòng dos cho tệp hiện tại:

:e +ff=unix

Điều này buộc fileformat thành unix, sẽ hiển thị CRdưới dạng^M


Để đặt cài đặt này vĩnh viễn, hãy thêm vào ~/.vimrc:

set ffs=unix

Lưu ý rằng cài đặt .vimrc là ffskhông ff.


Điều này nên :e ++ff=unix, tôi tin.
fork0

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.