Hiển thị CR và LF chứ không phải là EOL xông trong ': set list'


12

Thay vì chọn một ký tự được hiển thị làm ký tự EOL, tôi muốn một ký tự hiển thị riêng cho cả CR và LF và bất kể tệp đó là unix hay dos. Điều này có thể không?


2
Vì vậy, nếu tôi hiểu bạn một cách chính xác, bạn muốn một cái gì đó giống như Hello%$cho các tệp DOS ( %CR ở đâu và $là một LF)? Điều này là không thể với list/ listcharscài đặt và tôi thực sự không thể tìm ra cách để làm điều này trong VimScript ...
Martin Tournoij

1
@Carpetsmoker Đúng vậy. Ngoài ra set listcó cách nào để có CRLFthể hiện như những nhân vật cụ thể không?
Thuyền trưởng Man

2
Bạn có thể làm nổi bật chúng một màu nhất định, nhưng không có cách nào để hiển thị chúng dưới dạng các ký tự cụ thể không bị hack afaik.
EvergreenTree

Tôi nghĩ rằng CR hoặc LF có thể được nhìn thấy tại một thời điểm, không phải cả hai.
SibiCoder

1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Antony

Câu trả lời:


2

Với một số cảnh báo, bạn có thể thực hiện việc này bằng chế độ nhị phân của Vim. Có vẻ như bạn có thể muốn sử dụng lệnh

vim -b +'set list' somefile

Ngoài ra, bạn có thể đặt những điều sau đây vào .vimrc:

:set binary
:set list

Điều quan trọng là chế độ nhị phân phải được thiết lập trước khi tệp được đề cập được đọc vào bộ đệm. Khi Vim đã đọc tệp, quá muộn; Thủ thuật này phụ thuộc vào việc thay đổi cách Vim đọc tệp. Cụ thể, điều bạn cần là Vim không cố gắng đoán loại cụ thể của tệp <EOL>.

Chế độ nhị phân thực hiện những gì bạn muốn, vô hiệu hóa phát hiện phân tách dòng tự động này, nhưng nó cũng thực hiện khá nhiều thứ khác:

  • đặt 'textwidth'thành 0
  • đặt 'wrapmargin'thành 0
  • bỏ cài đặt 'modeline'
  • bỏ cài đặt 'expandtab'

Vì vậy, bạn có thể không muốn có điều này trong bạn .vimrc; có thể tốt hơn khi sử dụng phiên bản dòng lệnh và chỉ dành cho những tệp bạn cần loại màn hình đặc biệt này.

Để biết thêm thông tin:

  • :help 'binary'
  • :help edit-binary
  • :help file-read
  • :help file-formats
  • :help 'fileformat'

but it does quite a few other things as wellLà bởi vì nhị phân là một FileTypevới một số lệnh tự động hoặc nó là một số thứ được xây dựng trong, không thể tránh khỏi?
Thuyền trưởng Man

Theo cụm từ đó, tôi muốn giới thiệu danh sách ngay sau nó.
Ptolemarch

Phải, tôi chỉ không trích dẫn toàn bộ mọi thứ :) Ý tôi là nó làm những việc đó vì nó sử dụng một số lệnh FileTypeđược gọi binaryvới các lệnh tự động đó hay nó chỉ là một số thứ được xây dựng?
Thuyền trưởng Man

1
À, đúng rồi. Không ai trong số này có bất cứ điều gì liên quan đến các loại tệp (nhưng nó khá bị cuốn theo các định dạng tệp). đây là một phần của chế độ nhị phân. Xem :help 'binary'. Và có lẽ :help 'fileformat'.
Ptolemarch

0

Nếu bạn thêm vào ~/.vimrc:

set ffs=unix
set list

Điều đó sẽ luôn luôn hiển thị CRnhư ^MLFnhư $.

Theo mặc định, vim sẽ diễn giải một tệp chỉ có CRLFphần cuối là tệp dos và hiển thị CRLFdưới dạng $. Bằng cách cài đặt ffs=unix, bạn buộc vim luôn mở dưới dạng tệp unix và do đó CR được coi là ký tự phụ.

Lưu ý: Hãy cẩn thận nếu sửa đổi và lưu các tập tin dos. Nếu bạn nhấn ENTER, nó sẽ chỉ chèn một LF. Bạn sẽ cần phải chèn thủ công CRbằng cách gõCTRL+V, CTRL+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.