【问题标题】:Vim no end of line on last line or eofVim 在最后一行或 eof 上没有行尾
【发布时间】:2011-05-07 05:14:23
【问题描述】:

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

:set binary
:set noeol
:w

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

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

【问题讨论】:

  • 二进制选项对文件类型没有任何作用。
  • 它可能关心的人:你为什么投票结束这个?常见问题解答告诉 “程序员常用的软件工具” 是热门话题。
  • @hobbs 将文件设置为二进制禁用许多选项,:help bin
  • 它们都不是文件类型,:help bin

标签: vim end-of-line eof


【解决方案1】:

我想添加一个我认为可能有用的答案。选择的答案总是会删除文件上的 EOL,即使文件开始时也是如此。这可能是您想要的行为,也可能不是。在我看来,我想在最初打开文件时保留 EOL。

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

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

au BufNewFile * set noeol

如果你总是想要 NOEOL ever,那么小伙子的命令就是。要注意的一件事是,如果您的文件底部有空格,那么最后您将丢失空格。这是因为发生了以下情况,

  1. VIM 读取文件并在末尾看到换行符并认为,OK,这是一个带有换行符的文件(无论是否处于二进制模式)。
  2. 当你写一个文件时,它会执行 autocmd,
    1. 设置二进制模式
    2. set noeol(这会删除 VIM 认为正在结束文件的 EOL 并将其删除。
    3. 文件被保存
  3. 现在您的文件中的 EOL 少了一个。

此过程将重复进行,直到 EOL 消失且文件以单个字符结束。使用我的设置,会发生什么是文件被打开,如果 VIM 看到至少一个 EOL,那么它会在内部保留它。如果你保存那个文件,不管它在那里(你可以通过输入set eol?来检查。如果你想摆脱内部存储的EOL,你只需说set noeol然后保存并BOOM ,最后一个 EOL 被删除。

哇哦,我打字有点烦。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 另外,在某些情况下,默认情况下在您的 .vimrc 中添加 set noeol 也会很有用。
    【解决方案3】:

    来自 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 重新加载。

    【讨论】:

    • 二进制对我不起作用,因为它会重置文件类型,还有其他选项可以在 eof 上禁用 eol 吗?
    • 然后用:setf your_file_type重新启用?
    • 我需要这个来处理 php 文件,它需要大量的黑客攻击,启用二进制文件,设置 noel,保存文件,而不是禁用二进制文件和设置文件类型。我还使用了 NERDTree,我可能必须破解它才能获得此功能。
    • 这是迄今为止最好的答案!在 1 句话中,您为 OP 的问题提供了 3 个强大的解决方案。我能够结合vim -b myfile:set noeol 来满足我的需求,现在我拥有了可以在任何地方使用的技能。我不必让我的 .vimrc 文件变得强大。我知道如何使用编辑器的力量。
    【解决方案4】:

    我想出了这个:

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

    谢谢大家。

    干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      相关资源
      最近更新 更多