0%

关于Vim添加文件末尾空行

今天使用hexo编辑link类型的文章,发现总是不能良好的转换,查明原因原来是vim在编辑保存markdown文件后在末尾加入空行所致。

Link类型markdown文件经过hexo generate不能成功装换为html静态页面,使用vimdiff仔细对比了模板文件与修改后的文件除了内容区别外,没有格式上的差别,却总是转换不成功。只好使用meld做对比,把meld的空行与空白字符对比选项打开,发现经过vim修改的文件在末尾被自动添加了换行,即多一个空行。将该空行删除,转换成功了。

vim这时做了什么?
查看vim的eol或者endofilne帮助选项:
:help eol

‘endofline’ ‘eol’ ‘noendofline’ ‘noeol’
‘endofline’ ‘eol’ 布尔型 (缺省打开)
局部于缓冲区
{Vi 无此功能}

写入文件时如果关闭本选项并且打开 ‘binary’ 选项,文件的末行不写入<EOL>。编辑新文件时自动打开本选项,除非该文件的末行本没有<EOL>,那时本选项被复位。通常你不需要自己置位或者复位本选项。如果 ‘binary’ 关闭,写入文件时不使用本值。如果 ‘binary’ 打开,本值被用于记住文件末行是否存在<EOL>,这样在写回文件时,就不会改变原来文件的使用方式。不过如果你愿意改变之,可自便。

由此看来,vim默认会在写入文件时在文件末尾插入<EOL>,以表示文件结束。每次编辑新文件时,自动打开’eol’选项,除非文件的末行本没有<EOL>,那时不自动添加<EOL>。

如果’binary’关闭,写入文件时不使用<EOL>.

如果’binary’ 打开,’eol’被用于记住文件末行是否存在<EOL>,这样在写回文件时,就不会改变原来文件的方式

如果关闭’eol’并且打开’binary’选项,文件的末行不写入<EOL>

如此,如果不想vim编辑文件时在末行添加空行,只要修改vimrc就可以了:

set noendofline binary

(完)

坚持原创技术分享,您的支持将鼓励我继续创作!

Welcome to my other publishing channels