Windows 上的 Vim 开始显示 ^M 字符
Posted
技术标签:
【中文标题】Windows 上的 Vim 开始显示 ^M 字符【英文标题】:Vim on Windows started showing ^M characters 【发布时间】:2013-05-15 10:35:44 【问题描述】:我在运行 PowerShell 2.0 版的 Windows 7 上。
我使用以下 PowerShell 代码(来自此答案:https://***.com/a/65148/360840)来修改我的 PowerShell 配置文件:
"`nNew-Alias which get-command" | add-content $profile
正如预期的那样,它在我的个人资料中附加了有问题的行,但是之后,我的 Vim 会话开始在每行的末尾显示 ^M 个字符。很奇怪!关于导致它的原因以及如何解决它的任何线索?我在 Vim 中尝试了set fileformat=dos
,但它什么也没做。
这是我的 Vim 版本信息:
(不知道如何将图片放大 - 这不是它的正常尺寸。)
【问题讨论】:
图像会根据周围元素的大小(即您的帖子的宽度)自动调整大小。只需右键单击它并在浏览器中选择“查看图像”或类似选项。 +1 谢谢,成功了。 【参考方案1】:vim-faq 14.13. I am seeing a lot of ^M symbols in my file. I tried setting the 'fileformat' option to 'dos' and then 'unix' and then 'mac'. None of these helped. How can I hide these symbols? 中有一些解决问题的选项
您的文件可能是unix
文件格式(所有行都以<CR>
结尾),并且您附加了dos
文件格式的行(以<CR><NL>
结尾的行,这让Vim 感到困惑。
【讨论】:
【参考方案2】:所以,我遇到了这个问题,解决方案略有不同。我检查了我的文件格式,它是 unix,你可以检查你的
:set fileformat?
它显示了我不想要的所有 ^M 字符......有趣的是,在上面指出的 VIM 手册中:http://vimhelp.appspot.com/vim_faq.txt.html#faq-14.13 声明 ^M 行结尾来自 DOS 文件格式和“如果文件有一些以 结尾的行和一些以 结尾的行,则文件格式设置为 'unix'。”
因此,鉴于此,您似乎希望删除所有 ^M 结尾,并保留结尾,但删除带有 :%s/\r$//
的结尾立即为我解决了这个问题,并且文件格式仍然显示“ Unix'。
这对我有用。作为旁注,为了提供更适合 google 的参考,我想指出我在使用 LocomotiveCMS 时遇到了这个问题。我正在使用 Wagon 将我的 CSS 文件拉回本地工作。当我找回它时,它充满了 ^M 字符,该文件仍然可以正常工作,只是很难看。
【讨论】:
【参考方案3】:问题是文件损坏了。在这种情况下,Vim 开始显示 ^M 字符以提醒您注意问题。修复是手动删除这些字符(%s/^M//g)
。
我仍然不清楚,因为这些字符应该在文件中,因为 Windows 文件格式使用它们。但至少问题解决了。
编辑:请参阅带有 dash-tom-bang 的 cmets 交换,它提供了说明。
【讨论】:
Vim 向您显示 ^M 字符不要“提醒”您注意文件(可能)处于 'unix' 模式但 some 行结束的事实以 DOS 行结尾。简单的解决方法是删除所有 ^M 字符,然后更改文件格式。 (不幸的是,您不能通过将文件格式更改为 dos 来修复它,但事实如此。) @dash-tom-bang:但是文件是 on Windows(即 DOS)。我同意您删除 ^M 字符可以解决问题,但这些字符实际上是 needed 在 DOS 上的。这就是为什么我说它仍然不清楚。 +1 您需要删除 ^M 字符,以便当您将文件格式切换为 dos 时,它们不会翻倍。重置文件格式后,您将获得正确的 CRLF 行结尾。 @dash-tom-bang:我明白了,将文件格式设置为 DOS 会插入这些字符。谢谢。 +1 我想补充一点,上面的删除命令%s/^M//g
对我不起作用。我的所有行尾都有一个,但是当我运行它时,它说没有可替换的实例......真的它们只是分散注意力,我不在乎它们是否被删除,我只是不不想看他们!我想知道是否有一个配置行可以隐藏它们。以上是关于Windows 上的 Vim 开始显示 ^M 字符的主要内容,如果未能解决你的问题,请参考以下文章