Thông tin cơ bản
Vim không hiển thị dòng mới nhất trong bộ đệm nhưng thực tế vim luôn đặt EOL ở cuối tệp khi bạn viết nó, bởi vì nó là tiêu chuẩn cho các tệp văn bản trong các hệ thống Unix. Bạn có thể tìm thêm thông tin về điều này ở đây . Nói tóm lại, bạn không phải lo lắng về sự vắng mặt của một dòng mới ở cuối tập tin trong vim.
Thí nghiệm 1
Bạn có thể làm thí nghiệm nhỏ này để kiểm tra hành vi này. Trong thiết bị đầu cuối thực hiện:
$vim test_test
nhập ví dụ chỉ ký tự 1
và lưu tập tin :w.
Bạn chỉ có một ký tự trong tập tin, phải không? Trên thực tế không :) Bây giờ bạn có trong tập tin 1
và LF
nhân vật của bạn . Hãy kiểm tra nó, với tiện ích hexdump:
$hexdump test_test
đầu ra:
0000000 31 0a
0000002
31
là mã ASCII cho ký tự 1
và 0a
là mã ASCII cho ký tự không in LF
mà đối với UNIX như bạn có thể đã biết mã ở cuối dòng.
Thí nghiệm 2
Nhưng điều gì sẽ xảy ra nếu chúng ta sẽ mở tệp không có eol
ký hiệu ở cuối tệp. Hãy cũng kiểm tra nó. Hãy tạo tập tin mà không có eol ở cuối, ví dụ như thế này:
$echo -n "1" > test_without_eol
và sau đó một lần nữa hãy nhìn vào bên trong nó với hexdump
$hexdup test_without_eol
đầu ra sẽ là:
000000 31
0000001
Vì vậy, không có bất kỳ eol
nhân vật ở đây. Hãy mở tập tin này trong vim:
$vim test_without_eol
Ở dưới cùng của trình soạn thảo, bạn sẽ thấy:
"test_without_eol" [noeol] 1L, 1C
Và nếu bạn lưu eol
ký tự tệp này sẽ được tự động đưa vào.
Chúng ta có thể làm gì về điều này?
Nếu bạn thực sự cần phải xem cuối tập tin. Hãy thử sử dụng lệnh này:
:set listchars=eol:$
Nó sẽ hiển thị tất cả các eol
ký tự như là $
dấu hiệu.