'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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…