【问题标题】:How do I hide the eol doc chars ^M in VIM如何在 VIM 中隐藏 eol doc chars ^M
【发布时间】:2010-12-03 02:54:56
【问题描述】:

在 Windows 上的 gvim 中,如果我有带有 CRLF eol 的文本,那么文本将在每行的末尾显示 ^M

如何从显示中“隐藏”该特殊字符?

:set nolist command """ 不会关闭它。

更新

我将:set fileformats=unix,dos 作为一个列表。起初它不起作用,但我关闭了文件并重新打开它,它起作用了。

默认情况下,我将文件格式设置为仅 unix 值。

感谢您的回答。

【问题讨论】:

    标签: windows vim newline eol


    【解决方案1】:

    您可能希望将fileformat 设置为dos

    :ed ++ff=dos %
    

    【讨论】:

    • 这似乎“修复”了文件,在缺少的地方添加了 dos 换行符,这可能是导致 vim 显示 ^M 标记的原因(在我的情况下)。
    • 这个答案和@jqno 的答案都是“正确的”,但方式不同。 :e ++ff=dos % 将在 DOS/Windows 模式下重新打开当前文件。 :set fileformats=dos 将导致任何随后打开的文件以 DOS/Windows 模式打开。 vim.wikia.com/wiki/File_format 提供了所有详细信息的良好解释
    【解决方案2】:

    隐藏它们:

    :set fileformats=dos
    

    删除它们(以便您以后可以将文件保存为 unix 文件):

    :%s/\r//g
    

    【讨论】:

    • 就我而言,在完成:set fileformats=dos 之后,我不得不通过:e % 重新加载文件。然后^M 字符全部消失了。
    【解决方案3】:

    虽然一劳永逸地采用 DOS 或 Unix 格式当然是更可取的方法,但有时一些同事只是不太关心适当的源代码管理以使他们的编辑行为正常。

    在那些绝望的情况下,与其完全转换文件(导致文件完全由自己根据 SCM 重写,使“责备”功能无用),我发现最好只是假装问题不存在存在。如果编译器兼容,并且 PHP 无论如何 ,您可以使用以下命令让混合 EOL 文件看起来非常酷:

    :match Invisible /\r$/
    

    或在较新版本的 VIM 7.4+ 中

    :match Ignore /\r$/
    

    更糟糕的是,大多数 GUI 编辑器以换行符结束文本文件,当文件以换行符结束时,它们会在底部显示一个空行。由于这有点烦人,大多数人会删除该空行,如果文件格式是 DOS,这将导致混合 EOL 文件(以及 Vim 中显示的可怕 ^Ms)。

    如果有人知道如何让 Eclipse 或 NetBeans 尊重换行符终止而不显示空的最后一行(正如 Vim 巧妙地所做的那样),分享你的知识,你会让编码员在这里感到高兴。 ;-)

    【讨论】:

    • 当我在 Windows 上运行的 gvim 7.4 上尝试此操作时,我得到“E28:没有这样的突出显示组名称:不可见”?还有什么我必须先做的吗?
    • 有趣,我已经有一段时间没有使用这个技巧了(因为新工作和更细心的同事),现在我用 Vim 7.4 在 OSX 上尝试了同样的错误.我猜Invisible 的定义从发行版的语法文件中消失了,所以我们可能不得不在我们自己的.vimrc 中重新实现它。不幸的是,我不知道它最初是如何编码的。
    • 我认为较新的语法是:match Ignore /\r$/
    【解决方案4】:

    通常会自动检测文件格式。您的文件中必须有混合的 Unix 和 DOS/Windows 行。

    试试这个来清理它(其中“干净”= unix 格式):

    % tr -d '\015' < old.file > new.file
    

    【讨论】:

    • 呃,你确实说“在 Windows 上”。哎呀。那么,受苦呢?每个人都有cygwin,对吧?我想 Windows 程序员比 *nix 程序员多得多,但我倾向于忘记这一点(尽管在 80 年代开始使用 MS-DOS)。受不了了,我自己……
    【解决方案5】:
    :0,$ s/<ctrl-v><ctrl-m>//g
    :set ff=dos
    

    【讨论】:

      【解决方案6】:

      我想指出的是,如果您使用的是完整的 VIM(至少在我的 ubuntu 9.10 机器上),它会“做你想做的事”并自动隐藏它,但是股票 vi(和 vim-tiny)不要自动隐藏 ^M。如果您进行最小安装(或服务器安装),您只会获得 vi 和 vim-tiny。我找到的解决方法是在我的 ubuntu 机器上安装正确的 vim(apt-get install vim)。希望能以与我相同的原因帮助出现这个主题的人:-D

      【讨论】:

        【解决方案7】:

        使用命令:

        :1,$ s/^v^M/ /g
        

        【讨论】:

        • touche` -- 我也错过了那个更好的点(虽然我确实复制了一份,而不是敲打原件)
        猜你喜欢
        • 1970-01-01
        • 2010-10-18
        • 2013-09-10
        • 2015-02-06
        • 2021-11-09
        • 2011-12-30
        • 2017-07-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多