Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vim show newline at the end of file

Tags:

vim

newline

eof

Using the set eol option Vim automatically adds a newline to the end of the file when it's saved. I have this option on but I would like to be able to see this newline in Vim, so I know that it's actually there.

For example with a file in Vim: Vim screenshot

And the same file in TextMate: TextMate screenshot

This always tricks me and I end up adding a second new line and end up realizing later. This exact same question was posted here but the answer that was accepted didn't answer this portion of the question.

Using set list: List screenshot

I can see there is a $ character denoting a new line after the last line but this also litters the rest of the file with these. I know I could set up a toggle for this but I'd really prefer the TextMate like behavior.

like image 629
Keith Smiley Avatar asked Mar 26 '13 14:03

Keith Smiley


People also ask

Does vim add newline at end of file?

Vim doesn't show latest newline in the buffer but actually vim always place EOL at the end of the file when you write it, because it standard for text files in Unix systems. You can find more information about this here. In short you don't have to worry about the absence a new lines at the end of the file in vim.

Which character is displayed after the end of the file in vim?

Bookmark this question. Show activity on this post. Using the set eol option Vim automatically adds a newline to the end of the file when it's saved.

How do I view Crlf in vi?

vi shows newlines (LF character, code x0A ) by showing the subsequent text on the next line. Use the -b switch for binary mode. For example , vi -b filename or vim -b filename -- . It will then show CR characters ( x0D ), which are not normally used in Unix style files, as the characters ^M .

How do you end a file with a newline?

The last line (like all lines) needs an \n to end it. An \n at the end of the file doesn't create an additional line. Sometimes, however, text editors will add a visible blank line there.


1 Answers

'endofline' is on by default so you don't need it in your ~/.vimrc.

EOL or "newline" doesn't mean "there's an empty line after here", it means "this marks the end of the line, any further characters are to be displayed on another line". "newline" != "new line".

The last line of your file is #21 and it ends with a "newline" character. Since there's no actual line after that "newline" character, no line #22, showing a line #22 is not only wrong but misleading.

TextMate's behavior is wrong.

Vim's behavior is correct.

If you want Vim to show a line #22, you'll need to explicitly add that line but it sounds rather silly to me.

like image 121
romainl Avatar answered Sep 27 '22 19:09

romainl