Vim显示并能够在文件末尾删除0x0a

时间:2014-04-29 07:50:49

标签: vim

这让我疯了。但是,类似的SO问题不包含答案,所以在这里它的形式略有不同:

有办法:

  1. 将文件末尾的vim show 0x0a显示为空行?

  2. 假设#1无法完成,我该如何删除eol?没有线,所以没有什么可以删除。

  3. 例如:

    1. vim -b myfile(目前没有eol)
    2. 在文件末尾添加空白行:w :q
    3. vim -b myfile - 空白行已消失,但hexdump显示0x0a仍然存在。这是不一致的行为。

3 个答案:

答案 0 :(得分:1)

您可以在set noeol模式中使用binary

:帮助noeol

   When writing a file and this option is off and the 'binary' option
    is on, no <EOL> will be written for the last line in the file.  This
    option is automatically set when starting to edit a new file, unless
    the file does not have an <EOL> for the last line in the file, in
    which case it is reset.

另见:Vim show newline at the end of file

答案 1 :(得分:1)

Vim在文件末尾显示0x0a的方式是它在[noeol]文件时打开文件时没有抱怨:edit(以你期望的那种“反向逻辑” )。正如您可能已经读过的那样,Vim(和Unix)的理念是尾部换行符应该在那里

基于这种理念,我不建议故意创建没有尾随换行符的文件。但是,有一些方法可以让Vim尊重并维护这些现有文件。我的PreserveNoEOL plugin提供了一种毫不费力地做到这一点的方法。

答案 2 :(得分:1)

我不知道如何查看最后一个空行,但要删除只是打开文件,运行:

:set binary noendofline

这将删除它的最后一个(不可见)空行。

警告:由于binary会修改某些设置(例如textwidth)!