40

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

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

:set nolist command """不会驳回它。

更新

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

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

感谢您的回答。

4

7 回答 7

38

您可能希望设置fileformatdos.

:ed ++ff=dos %
于 2009-10-01T19:34:41.090 回答
24

要隐藏它们:

:set fileformats=dos

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

:%s/\r//g
于 2009-10-01T19:38:09.107 回答
12

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

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

:match Invisible /\r$/

或者在较新版本的 VIM 7.4+

:match Ignore /\r$/

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

如果有人知道如何让 Eclipse 或 NetBeans 在不显示空最后一行的情况下使换行符终止(就像 Vim 巧妙地所做的那样),分享您的知识,您将在这里让编码人员感到高兴。;-)

于 2012-08-27T11:02:05.570 回答
1

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

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

% tr -d '\015' < old.file > new.file
于 2009-10-01T19:37:20.653 回答
0

使用命令:

:1,$ s/^v^M/ /g
于 2009-10-01T19:36:41.670 回答
0
:0,$ s/<ctrl-v><ctrl-m>//g
:set ff=dos
于 2009-10-01T19:35:04.817 回答
0

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

于 2010-03-09T18:37:18.587 回答