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
0x0a
vim-b myfile
(当前无下线):w
:q
您可以在
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
。