Tôi đã mở một tệp bằng vim
Ubuntu và phần sau được hiển thị ở cuối màn hình:
"file.py" [noeol] 553L, 16620C
Điều gì noeol
chỉ ra?
Tôi đã mở một tệp bằng vim
Ubuntu và phần sau được hiển thị ở cuối màn hình:
"file.py" [noeol] 553L, 16620C
Điều gì noeol
chỉ ra?
Câu trả lời:
Các biên tập viên Unix thích vi
và vim
sẽ luôn đặt dòng mới ( \n
) ở cuối mỗi dòng - đặc biệt là bao gồm dòng cuối cùng. Nếu không có dòng cuối ( eol
) trên dòng cuối cùng thì đó là một tình huống bất thường và tệp chắc chắn không được tạo bởi trình soạn thảo UNIX tiêu chuẩn.
Tình huống bất thường này được đưa đến thông báo của bạn bằng [noeol]
cờ trong vim
trình chỉnh sửa; các biên tập viên khác có thể có cờ và thông báo tương tự.
emacs
, di chuyển con trỏ đến cuối tệp (dòng cuối cùng, sau ký tự cuối cùng) và thực thi kill-line
, cuối cùng bạn thực sự xóa eol
.
Dòng cuối cùng trong tệp không có dòng mới (\ n)
\n
ở cuối dòng để coi nó là một dòng hoàn chỉnh (với một dòng char mới theo dõi). Ví dụ chương trình một tập tin có thể trông giống như một sau hoàn chỉnh đường trong nháy mắt bình thường trong một trình soạn thảo văn bản, nhưng wc
không không condider nó như một dòng: printf "x">"file-no-newline"; wc -l <"file-no-newline"
- Outpute là: 0
.. các noeol chỉ là một trợ giúp trực quan để cho bạn biết tình trạng ..
Điều này có nghĩa là HĐH nơi bạn xem tệp không thể phát hiện kết thúc dòng của tệp (nếu tệp có bất kỳ tệp nào). Đôi khi điều này xảy ra khi bạn di chuyển (các) tệp trên các hệ điều hành (i, e .. từ MS sang * nix os)
Trong vim, nếu tệp có cửa sổ vận chuyển trở lại " ^M"
, bạn có thể sửa nó bằng lệnh sau: in vim do:
:%s/^M/\r/g
Ý nghĩa:
% => select the whole buffer
s => Search
/^M/ => find Windows Carrage return.
/\r/ => Replae it with *nix carrage return
Lưu ý: trong Mac OX, ^M is ctl+v && ctrl+m
Đó là 'KHÔNG EOL' - không có chỉ báo kết thúc . Rất hữu ích nếu bạn kết thúc việc mở một tệp rất lớn (> 1GB). Vim cố gắng kéo tất cả những thứ đó trong 1 dòng. Chỉ báo này giúp tôi nhanh chóng đóng tệp trước khi nó làm hỏng hệ điều hành của tôi.