如何使vim显示^ M并替换它

gui*_* 桂林 44 regex vim

我的vim显示选项卡为--->,但不显示windows ^ M字符.

而且,如何在vim中替代它.

更新============

我检查我的vimrc它是设置fileformat = unix但是当我打开一个dos文件时设置ff是dos

小智 69

将CRLF显示为^ M:

:e ++ ff = unix

将CRLF替换为LF:

:setlocal ff = unix
:w
:e

  • 您能否在每个行的内容中添加一个解释(在单独的段落中). (8认同)
  • `:e ++ff=unix` 使用 `:edit` 命令再次从磁盘加载文件,特别是使用 unix 文件格式:`++ff=unix`。`:setlocal` 我相信只为这个 vim 窗口设置一个本地选项,确保文件格式设置为 unix:`ff=unix`。`:w` 将文件写入磁盘。`:e` 再次从磁盘加载文件以显示文件的当前状态。 (2认同)

Dig*_*oss 62

除了一种情况外,Vim确实显示^ M:如果fileformat = dos,那么它将不会显示尾随的crlf.

您可以通过键入找出您拥有的格式(unix或dos):set,只需更改格式(:set fileformat=unix)然后写出文件即可删除crlf中的^ M.

如果你在行的中间有一个^ M,那么你应该能够看到它,即使是在一个fileformat=dos文件中,你也可以将它与模式匹配\r.(奇怪的是,对于subsituting换行的语法是\r在子的更换部件,所以方式之一改变^ M来^ N是由未在-所有-A-空操作:s/\r/\r/).


小智 9

要从 vim 中删除 ^M 字符:在命令模式下键入

%s/
Run Code Online (Sandbox Code Playgroud)

其次是

ctrl+v and Enter. 
Run Code Online (Sandbox Code Playgroud)

它应该看起来像:

%s/^M
Run Code Online (Sandbox Code Playgroud)

最后替换为空白字符:

%s/^M//g
Run Code Online (Sandbox Code Playgroud)


blu*_*lur 8

老式的方式 - 即使在 vi 中也能工作:

    vim -b filename
    :%s/^V^M//g
    :x
Run Code Online (Sandbox Code Playgroud)

说明:

  • vim -b 以二进制模式打开vim,所有控制字符都将可见
  • vi 没有 -b 选项,但 vi 也不需要它,它会默认显示 ^M
  • :%s 是搜索替换 - 我们将 ^M 替换为空
  • 您必须按顺序键入 Control-V Control-M,您可以一直按住 Control,也可以释放它并再次按下 - 两者都有效。
  • ^V 将消失,只有 ^M 会保留。^V 表示按字面意思插入下一个字符(尝试在 ^V 之后按 Escape 键)。如果没有它,Control-M 将仅意味着回车 - 或与按 Enter 相同。
  • 不要尝试用鼠标复制 ^M,它会将其分成两个字符 ^ 和 M,并且意味着在行首搜索 M。
  • g 表示全局 - 如果您仅在行尾有 ^M ,那么您实际上并不需要它
  • :x 表示保存并退出 - 几乎没有人使用它


jke*_*ian 7

vim正在自动检测fileformat和切换模式以匹配(看看set ff)

如果要强制它以特定模式打开,请抛出+ff=unix(以显示^ M)或+ff=dos在命令行中以该模式打开它.如果您在Windows框中,请:e ++ff=unix在打开文件后尝试.

如果您试图将这些字符删除,可以在一种模式下打开它,将ff设置为您想要的,然后保存文件.查看:h ff更多详细信息.