Vim中每行结尾处的^M

mzsu5hc0  于 2022-11-11  发布在  其他
关注(0)|答案(9)|浏览(204)

当我使用Vim和其他编辑器编辑源文件时,有时我会在每一行的末尾得到这些^M字符。我认为这与在Windows上编辑文件,然后在Linux上编辑文件有关。我如何自动删除所有这些字符?

yfwxisqw

yfwxisqw1#

作为命令,键入

:%s/^M$//

(To获取^M,按^V ^M,其中^在大多数键盘上是CTRL键)

ffvjumwh

ffvjumwh2#

去掉DOS行尾的一种简单方法是使用ff选项:

:set ff=unix
:wq

现在,您的文件又回到了良好的老Unix方式。
如果你想 * 添加 * DOS行尾(为了让打印机满意,或者和没有好工具的Windows朋友传输文件),你可以轻松地走相反的方向:

:set ff=dos
:wq
ttygqcqt

ttygqcqt3#

您可以执行以下操作:

:set fileformats=dos

它将隐藏^M的,而不触及文件。

5vf7fwbs

5vf7fwbs4#

有一个叫dos2unix的程序可以帮你去掉这些。Windows使用不同的行尾字符,这就是为什么会发生这种情况。

4xrmg8kj

4xrmg8kj5#

这对我来说很有用,因为文件中的所有内容都在一行上:
首先查找所有匹配项

:%s/^M//

(To要获取^M,请按^V ^M,其中^在大多数键盘上是Ctrl)
然后以新行取代

:%s//\r/g

组合命令将为:

:%s/^M/\r/g
7uzetpgm

7uzetpgm6#

我倾向于在重新打开受影响的文件之前通过**fromdos**运行它们。fromdostofrodos包的一部分。

ztigrdn8

ztigrdn87#

问题的根源可能是通过FTP传输。当您将这些文件从一个框FTP到另一个框时,请确保使用ASCII传输。请使用命令“ASC”。

8tntrjer

8tntrjer8#

" put this in your ~/.vimrc file and :source ~/.vimrc
" then you can do: Dos2Unix
" dos2unix ^M
fun! Dos2unixFunction()
    let _s=@/
    let l = line(".")
    let c = col(".")
    try
        set ff=unix
        w!
        "%s/\%x0d$//e
    catch /E32:/
        echo "Sorry, first save the file."
    endtry
    let @/=_s
    call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()
mhd8tkvw

mhd8tkvw9#

mcedit:shift+f2,设置Unix(LF),确定

相关问题