当前位置:  开发笔记 > 前端 > 正文

Vim在最后一行或eof上没有行尾

如何解决《Vim在最后一行或eof上没有行尾》经验,为你挑选了3个好方法。

我试图设置vim跳过在最后一行或eof上添加eol,我试过这个

:set binary
:set noeol
:w

这不完美导致二进制覆盖文件类型供以后使用.

设置此项的任何其他选项,我不需要在最后一行换行.



1> milkypostman..:

我想添加一个我认为可能有用的答案.所选答案总是删除文件上的EOL,即使他们有一个开头.这可能是您想要的行为,也可能不是.在我看来,我想保留 EOL,因为我最初打开文件.

我建议稍作修改.放在文件set binary的顶部.vimrc.这样任何文件都将以二进制模式打开.如果他们没有EOL,那么vim将检测到这一点,并将其保留为NOEOL.如果他们有EOL,那么它会认为它有EOL并且保留它.

如果您希望文件也没有EOL,那么您应该设置,

au BufNewFile * set noeol

在第一章的命令是,如果你总是想NOEOL 不断.要注意的一件事是,如果你的文件底部有空格,那么你最后会丢失空格.这是因为发生了以下情况,

    VIM读取文件并在最后看到换行符,并且认为,这是一个带换行符的文件(无论是否处于二进制模式).

    然后当你写一个文件时它会执行autocmd,

      设置二进制模式

      set noeol(这会删除VIM 认为结束文件的EOL 并删除它.

      文件被保存

    现在你有一个文件少了一个EOL.

此过程将重复,直到EOL消失并且文件以单个字符结尾.通过我的设置,会发生什么是打开文件,如果VIM看到至少一个EOL,那么它会在内部保留它.如果您保存该文件,无论它是什么(您可以通过键入进行检查set eol?.如果您想要删除内部存储的EOL,您只需说出set noeol然后保存和BOOM,最后一个EOL将被删除.

WHOOO,我啰嗦打字.



2> Dejan Ranisa..:

这在某处我发现更好:

au BufWritePre * :set binary | set noeol
au BufWritePost * :set nobinary | set eol



3> Benoit..:

从vim文档中:

'binary' 'bin'      boolean (default off)
            local to buffer
            {not in Vi}
    This option should be set **before** editing a binary file.  You can also

因此,您应该使用vim -b:e ++bin file,或使用重新加载:e! ++bin

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有