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

Vim显示并能够在文件末尾删除0x0a,vim,Vim,这让我快发疯了。类似的问题不包含答案,所以这里的答案又略有不同: 有没有办法: 是否使vim在文件末尾以空行形式显示0x0a 假设1不能完成,我如何删除eol?没有行,因此没有要删除的内容 例如: vim-b myfile(当前无下线) 在文件末尾添加空行,:w:q 代码> vim -b MyFiels空白行已经消失,但是 HyDupp显示“代码> 0x0A 仍然存在。这是不一致的行为 您可以在binary模式下使用set noeol: :帮助noeol When writing a fi

这让我快发疯了。类似的问题不包含答案,所以这里的答案又略有不同:

有没有办法:

  • 是否使vim在文件末尾以空行形式显示
    0x0a

  • 假设1不能完成,我如何删除eol?没有行,因此没有要删除的内容

  • 例如:

  • vim-b myfile
    (当前无下线)
  • 在文件末尾添加空行,
    :w
    :q
  • <>代码> vim -b MyFiels空白行已经消失,但是<代码> HyDupp显示“代码> 0x0A 仍然存在。这是不一致的行为
    您可以在
    binary
    模式下使用
    set noeol

    :帮助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在文件末尾显示0x0a的方式是,它打开文件时不会抱怨
    [noeol]
    :edit
    编辑该文件时(与您期望的“反向逻辑”不同)。正如您可能已经读过的,Vim(和Unix)的理念是后面的换行符应该在那里


    基于这种理念,我不建议故意创建没有尾随换行符的文件。但是,有一些方法可以使Vim尊重并维护这些现有文件。My提供了一种轻松完成此操作的方法。

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

    :set binary noendofline
    
    这将从中删除最后一个(不可见)空行


    警告:由于
    binary
    的原因,某些设置将被修改(例如
    textwidth

    就像你说的,“没有行,所以没有什么可删除的”,也没有什么可做的。我可以在二进制模式下编辑它,在这种情况下Unix的原理不适用。问题是,即使在二进制模式下,vim也会隐藏尾随的0x0a,如果不使用
    设置行
    进行检查,然后
    设置noeol
    :w
    进行删除,就无法查看和删除尾随的0x0a。您可以将
    'eol'
    添加到
    'statusline'
    设置中(显示是否会写入一个),或者甚至在缓冲区中构建一个真实的表示(使用autocmd BufWritePre/BufWritePost在缓冲区保存期间附加一个空行/删除它)。我如何知道eol是否存在?除非我使用
    设置行
    ,然后执行
    设置noeol
    是不方便的,而且它还需要
    :w
    ,否则它不会执行任何操作。难道没有正常的方法吗?在过去的20年里,我一直在使用vi/vim,这是我第一次对它感到失望。@YuriGeinish-您可以使用cli工具
    od-x | tail
    查看它。它将在
    od
    的输出中显示为
    000a