Vim 中的 ^M 字符是啥意思?

     2023-02-16     102

关键词:

【中文标题】Vim 中的 ^M 字符是啥意思?【英文标题】:What does ^M character mean in Vim?Vim 中的 ^M 字符是什么意思? 【发布时间】:2011-08-16 03:43:52 【问题描述】:

我的 vimrc 中不断出现^M 字符,它破坏了我的配置。

【问题讨论】:

顺便说一句 this 是一个很好的资源。 @LightnessRacesinOrbit - 嗯,它现在也可以使用表单。我已撤回我的评论,说链接已失效。 @LightnessRacesinOrbit 链接的镜像,目前已关闭:fifi.org/doc/vim/html/digraph.html#digraph-table 在 vim 中键入 :digraphs 会显示 @LightnessRacesinOrbit 链接到的有向图。 当尝试使用php替换这种字符时,试试这个preg_replace('/[\x01]/', ' ' ,$str); 希望它有帮助。 【参考方案1】:

这可能意味着你有回车(不同的操作系统使用不同的方式来表示行尾)。

使用dos2unix 修复文件或在vim中设置文件格式:

set ffs=unix,dos

【讨论】:

【参考方案2】:

您可以在 vim 中使用

解决此问题
:1,$s/^V^M//g

其中 ^ 是控制字符。

【讨论】:

这并不能解释^M是什么。 他并不是真的在问它是什么,而是在问如何解决它。它是一个来自 DOS 的回车符。 知道它是什么。问题的标题是“Vim 中的 ^M 字符是什么意思”。【参考方案3】:

Unix 使用 0xA 作为换行符。 Windows 使用两个字符的组合:0xD 0xA。 0xD 是回车符。 ^M 恰好是 vim 显示 0xD 的方式(0x0D = 13,M 是英文字母表中的第 13 个字母)。

您可以通过运行以下命令删除所有 ^M 字符:

:%s/^M//g

^M 的输入方法是按住 Ctrl 并键入 v,然后键入 m,然后松开 Ctrl kbd>。这有时缩写为^V^M,但请注意,您必须按照上句所述输入它,而不是按字面输入。

这个表达式会将所有出现的^M 替换为空字符串(即什么都没有)。我用它来删除从 Windows 复制到 Unix(Solaris、Linux、OSX)的文件中的^M

【讨论】:

以防万一您在 Windows 上,Ctrl+V 可能会被映射为粘贴。如果是这种情况,默认值会将“特殊字符转义”键重新映射为 Ctrl+Q。 真正的问题是为什么 Vim 有时会自动检测行尾并正确显示,而有时却不能。 如果文件的行尾不匹配,您将看到 ^M 字符。使用 Tomasz 提供的命令,然后根据您的目标操作系统键入 :fileformat=unix|dos|mac。如果只有几行没有^M 字符,您可能需要:fileformat=dos。如果您在 vim 以外的编辑器中编辑文件,请确保将其配置为匹配行尾(记事本不会这样做,但任何有信誉的编辑器如 Notepad++ 或 TextMate 都会这样做)。 初学者注意vi,该命令需要手动输入。只需将其粘贴到运行 vi 的打开终端中就会导致“找不到模式”错误。 @bluesm 我实际上需要使用:%s/\r//g 来替换文件中的回车符。在我有一堆 ^M 字符的文件中找不到 ^V^M 模式。【参考方案4】:

如果它破坏了您的配置,并且映射中需要 ^M 字符,您可以简单地将 ^M 字符替换为 <Enter> 甚至 <C-m>(都输入为简单的字符序列,因此 7 和 5 个字符,分别)。

这是在映射中存储特殊键码的唯一推荐的、可移植的方式

【讨论】:

【参考方案5】:
:%s/\r//g 

今天为我工作。但我的情况可能略有不同。

【讨论】:

g 选项不是必需的,每行只有一个新行。 :%s/\r// 就足够了。 很可能需要 g 选项,因为回车不一定是换行符。在 Unix 模式下打开时,回车只是另一个字符,而在 Windows 模式下打开时,回车只是特殊的紧跟换行符。【参考方案6】:

在 FreeBSD 中,您可以通过键入以下内容手动清除 ^M

:%s/ Ctrl+V,然后是Ctrl+M,然后是Ctrl kbd>+M 再次。

【讨论】:

【参考方案7】:

翻译新行而不是删除它:

:%s/\r/\r/g

【讨论】:

这实际上应该做什么?对我来说,它看起来像是在用like代替like,我无法想象这会改变什么。我是否遗漏了一些关于语法如何在这里工作的特别之处? @PlatinumAzure 我不知道为什么没有人想过回答你的问题。 \r 在搜索部分与替换部分有不同的行为。例如,请参阅***.com/a/3834303。 :%s/^V^M/^V^M/g 见here @TomD 该链接指向您正在评论的答案。 对我来说,这用一个额外的换行符替换了烦人的字符。 @dlk5730 答案对我来说效果更好。即:%s/\r//g【参考方案8】:

我得到了一个最初由 Mac 用户在 Windows 机器上生成的文本文件,需要使用 load data 命令将其导入 Linux MySQL 数据库。

虽然 VIM 显示了 '^M' 字符,但上述方法都不适用于我的特定问题,数据会导入但总是以某种方式损坏。最终解决方案非常简单(经过多次挫折)。

解决方案: 在同一个文件上执行dos2unix TWICE 就可以了!使用file 命令可以显示一路上发生的事情。

$ file 'file.txt'
file.txt: ASCII text, with CRLF, CR line terminators

$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text, with CRLF line terminators

$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text

并且文件的最终版本完美地导入到数据库中。

【讨论】:

【参考方案9】:

我用 sed 删除了它们:

sed -i -e 's/\r//g' <filename>

也可以用不同的字符串或字符替换。例如,如果没有换行符,您可以将\r 转换为\n

sed -i -e 's/\r/\n/g' <filename>

那些sed 命令在sed 的GNU/Linux 版本上工作,但可能需要在BSD(包括macOS)上进行调整。

【讨论】:

【参考方案10】:

在 Unix 中,使用 'tr' 命令可能更容易。

cat file1.txt | tr "\r" "\n" > file2.txt

【讨论】:

【参考方案11】:

假设你的文本文件是-file.txt,然后运行这个命令-

dos2unix file.txt 

它将文本文件从dos转换为unix格式。

【讨论】:

完美运行!【参考方案12】:

我发现由于我的 Homebrew Mvim 实例设置为使用 filetype=dos,我已经污染了数周的文件。在 .vimrc 中进行了所需的更改....

【讨论】:

【参考方案13】:

试试:%s/\^M// 至少这对我有用。

【讨论】:

【参考方案14】:

如果您没有有意指定不同的 fileformat(例如,Windows 文件为 :e ++ff=unix),则目标文件可能混合了 EOL。

例如,如果文件的某些行以<CR><NL> 结尾,而其他行以 <NL> 结尾,而fileformat 被 Vim 自动设置为 unix 时,^M (<CR>) 会出现。 在这种情况下,fileformats(注意:还有一个额外的s)会发挥作用。详情请见:help ffs

【讨论】:

【参考方案15】:

这是唯一对我有用的方法:

:e ++ff=dos

:wq

【讨论】:

太棒了!这为需要它们的人保留了 DOS 行尾,并修复了阻止 Vim 正确识别 DOS 行尾的错误(我有一个文件在数千行中缺少一个 CR)。

Python ABI 标签中的“m”是啥意思?

】PythonABI标签中的“m”是啥意思?【英文标题】:Whatdoesthe\'m\'inaPythonABItagmean?PythonABI标签中的“m”是什么意思?【发布时间】:2019-01-0817:42:07【问题描述】:PEP425解释了内置python发行版的兼容性标记格式,但没有详细解释ABI标... 查看详情

代码注释中的#XXX是啥意思?

】代码注释中的#XXX是啥意思?【英文标题】:Whatisthemeaningof#XXXincodecomments?代码注释中的#XXX是什么意思?【发布时间】:2010-11-2923:46:11【问题描述】:我在代码中见过很多这种情况,甚至vim都将其标记为特例。#TODO和#FIXME是vim突... 查看详情

SSE 指令中的 UnsignedSaturate 是啥意思?

】SSE指令中的UnsignedSaturate是啥意思?【英文标题】:WhatdoesUnsignedSaturateinSSEinstructionmean?SSE指令中的UnsignedSaturate是什么意思?【发布时间】:2012-08-2711:26:58【问题描述】:我正在将SIMD代码转换为等效的c代码。我被困在SSE指令之... 查看详情

powershell中的竖线字符是啥意思?

】powershell中的竖线字符是啥意思?【英文标题】:Whatdoestheverticallinecharactermeaninpowershell?powershell中的竖线字符是什么意思?【发布时间】:2015-09-2908:56:48【问题描述】:我正在使用这里的脚本http://blog.kuppens-switsers.net/sharepoint/find... 查看详情

当我创建一个新项目时,Xcode 4 的 Project Navigator 中的“M”和“A”图标是啥意思?

】当我创建一个新项目时,Xcode4的ProjectNavigator中的“M”和“A”图标是啥意思?【英文标题】:Whatdothe"M"and"A"iconsintheProjectNavigatorofXcode4meanwhenIcreateanewproject?当我创建一个新项目时,Xcode4的ProjectNavigator中的“M”和... 查看详情

url 查询中的字符 %7D 是啥意思?

】url查询中的字符%7D是啥意思?【英文标题】:Whatdothechars%7Dmeaninanurlquery?url查询中的字符%7D是什么意思?【发布时间】:2014-04-2523:04:46【问题描述】:如果我使用url访问我的web应用程序/vi/5907399890173952.html然后它可以工作,但是... 查看详情

CSS中的前导连字符是啥意思? [关闭]

】CSS中的前导连字符是啥意思?[关闭]【英文标题】:WhatdoleadinghyphensmeaninCSS?[closed]CSS中的前导连字符是什么意思?[关闭]【发布时间】:2013-01-0105:49:10【问题描述】:在thisblogpost我发现了以下CSSsn-p:htmlbackground:url(images/bg.jpg)no-re... 查看详情

字符串文字中的符号 \0 是啥意思?

】字符串文字中的符号\\\\0是啥意思?【英文标题】:Whatdoesthesymbol\\0meaninastring-literal?字符串文字中的符号\\0是什么意思?【发布时间】:2011-06-1007:59:58【问题描述】:考虑以下代码:charstr[]="Hello\\0";str数组的长度是多少,以多... 查看详情

这个 Vigenere 密码中的“字符串索引超出范围”是啥意思?

】这个Vigenere密码中的“字符串索引超出范围”是啥意思?【英文标题】:Whatdoes"stringindexoutofrange"meaninthisVigenerecipher?这个Vigenere密码中的“字符串索引超出范围”是什么意思?【发布时间】:2015-11-1120:19:30【问题描述】... 查看详情

打字稿中的剂量[索引:字符串]是啥意思[重复]

】打字稿中的剂量[索引:字符串]是啥意思[重复]【英文标题】:whatdose[index:string]meanintypescript[duplicate]打字稿中的剂量[索引:字符串]是什么意思[重复]【发布时间】:2021-04-1412:56:03【问题描述】:我是Typescript的新手。我在GitHub... 查看详情

python的rand是啥意思?

python中的randint用来生成随机数,在使用randint之前,需要调用random库。其表达是为random.randint(x,y),参数x和y代表生成随机数的区间范围。random()函数命名来源于英文单词random(随机)。randint是random+integer拼接简写而成,代表随机... 查看详情

python 3中的字符串格式“%g%%”是啥意思? [复制]

】python3中的字符串格式“%g%%”是啥意思?[复制]【英文标题】:Whatisthestringformat"%g%%"meaninpython3?[duplicate]python3中的字符串格式“%g%%”是什么意思?[复制]【发布时间】:2019-03-0309:12:02【问题描述】:根据python3文档,格式... 查看详情

URL中的冒号“:”是啥意思?

】URL中的冒号“:”是啥意思?【英文标题】:whatdoescolon\':\'meaninURL?URL中的冒号“:”是什么意思?【发布时间】:2020-05-2103:10:44【问题描述】:例如http://www.wikihow.com/Special:CreatePage“Special”和“CreatePage”之间的“:”是什么意... 查看详情

oracle查询语句selecta','b','cfromtablewhereain('m','n')是啥意思啊

...?就是显示的时候链接abc和中间的逗号么?追答||在oracle中的作用是连接两个字符串追问那就是说,先selectabc然后连接对吧,刚开始学不太懂追答你可以这么理解参考技术A||是oracl的字符串连接运算符,'xxxx'表示的是字符串... 查看详情

Perl 中的“0 但为真”是啥意思?

】Perl中的“0但为真”是啥意思?【英文标题】:Whatdoes"0buttrue"meaninPerl?Perl中的“0但为真”是什么意思?【发布时间】:2010-09-1221:32:07【问题描述】:谁能解释一下字符串“0buttrue”在Perl中的确切含义?据我了解,它在... 查看详情

vim<plug>是啥意思

vim-plug是一个小型的vim插件管理器。特性:易于安装,单个文件易于使用,语法直观超快的并行安装和更新可创建影子克隆来最小化磁盘使用以及下载时间按需加载,大大提升启动速度可浏览和回滚更新Branch/tag支持更新后的钩子... 查看详情

Java 9 的版本字符串方案中的第 4 个数字是啥意思?

】Java9的版本字符串方案中的第4个数字是啥意思?【英文标题】:Whatdoesthe4thnumbermeaninJava9\'sversionstringscheme?Java9的版本字符串方案中的第4个数字是什么意思?【发布时间】:2018-04-1917:48:09【问题描述】:根据Java9的新版本字符串... 查看详情

$(美元符号和花括号)在 Javascript 中的字符串中是啥意思?

】$(美元符号和花括号)在Javascript中的字符串中是啥意思?【英文标题】:Whatdoes$(dollarsignandcurlybraces)meaninastringinJavaScript?$(美元符号和花括号)在Javascript中的字符串中是什么意思?【发布时间】:2016-06-2012:12:34【问题描述】... 查看详情