最后一行或eof上的Vim无线端

最后一行或eof上的Vim无线端,vim,end-of-line,eof,Vim,End Of Line,Eof,我正在尝试设置vim,以跳过在最后一行或eof上添加eol,我已经尝试了这个 :set binary :set noeol :w 这是不完美的,因为二进制重写文件类型供以后使用 任何其他设置选项,我不需要在最后一行换行。来自vim文档: 'binary' 'bin' boolean (default off) local to buffer {not in Vi} This option should be set **befo

我正在尝试设置vim,以跳过在最后一行或eof上添加eol,我已经尝试了这个

:set binary
:set noeol
:w
这是不完美的,因为二进制重写文件类型供以后使用


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

来自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文件
,或使用
:e++bin

我想到了这个:

" php remove eol from end of file
autocmd FileType php setlocal noeol binary fileformats="mac,unix,dos"
谢谢大家


干杯。

这比我在某处找到的更好:

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

我想补充一个我认为同样有用的答案。所选答案始终删除文件上的下线,即使它们有一个下线开始。这可能是你想要的行为,也可能不是。在我看来,我想保留我最初打开文件时的下线

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

如果希望新文件也没有EOL,则应设置

au BufNewFile * set noeol
chap的命令是:如果您总是想要NOEOLever。需要注意的一点是,如果文件底部有空格,那么最后会丢失空格。这是因为发生了以下情况:

  • VIM读取文件并在末尾看到一个换行符,然后认为,好的,这是一个有换行符的文件(无论是否处于二进制模式)
  • 然后,当您写入文件时,它会执行autocmd,
  • 设置二进制模式
  • set noeol(这将删除VIM认为正在结束文件的EOL,并将其删除
  • 文件将被保存
  • 现在您有了一个文件,其中少了一个EOL
  • 此过程将重复,直到EOL消失,文件以单个字符结尾。在我的设置中,所发生的事情是打开文件,如果VIM看到至少一个EOL,则它会在内部保留它。如果保存该文件,无论它在哪里(您可以通过键入
    set eol?
    进行检查。如果您想清除内部存储的eol,只需说
    set noeol
    ,然后保存并BOOM,最后一个eol将被删除


    哇哦,我打这个都烦死了。

    二进制选项对文件类型没有任何作用。它可能会问:你为什么投票关闭这个?常见问题解答告诉“程序员常用的软件工具”关于主题。@hobbs将文件设置为二进制禁用许多选项,:help binand没有一个是文件类型,:help binSimilar:at SOBinary对我不起作用,因为它重置了文件类型,有没有其他选项禁用eof上的eol?然后使用
    :setf your_file_type
    重新启用它?我需要这个用于php文件,而且它需要很多黑客攻击,启用binary、 设置noel,保存文件,而不是禁用二进制文件和设置文件类型。我还使用NERDTree,我可能需要破解它才能获得此功能。这是迄今为止最好的答案!在一句话中,您为OP的问题提供了3个强大的解决方案。我能够结合
    vim-b myfile
    :set noeol
    ,以满足我的需要现在我有了一项可以在任何地方使用的技能。我不必让我的.vimrc文件变得强大。我知道如何使用编辑器的强大功能。在某些情况下,在默认情况下在.vimrc中预先设置
    set noeol
    ,也会很有用。