当我使用Vim和其他编辑器编辑源文件时,有时会在每行末尾出现^M
字符。
我认为这与在Windows上编辑文件然后在Linux上编辑有关。
如何自动删除所有这些字符?
当我使用Vim和其他编辑器编辑源文件时,有时会在每行末尾出现^M
字符。
我认为这与在Windows上编辑文件然后在Linux上编辑有关。
如何自动删除所有这些字符?
作为一个命令,输入:
:%s/^M$//
(如果想得到 ^M,按下^V^M。其中^在大多数键盘上是 CTRL 键)
:%s/\r$
可以将回车符号删除。 - sehe简单地去除DOS行尾的一种方法是使用ff
选项:
:set ff=unix
:wq
现在你的文件回到了好老的Unix方式。
如果你想添加DOS换行符(以便让打印机快乐,或者与没有好工具的Windows朋友传输文件),你可以轻松地走相反的方向:
:set ff=dos
:wq
git diff
显示每一行都被删除和添加了 :/ - Tommy您可以这样做:
:set fileformats=dos
它将隐藏^M
,而不会影响文件本身。
:%s/^M//
(要获取^M
,请按下大多数键盘上的Ctrl键和V键,然后再按下Enter键^M
)
然后用换行符替换
:%s//\r/g
组合命令应为:
:%s/^M/\r/g
" 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()
mcedit:按下Shift+F2,设置Unix格式(LF),确定
statusline
选项值中有%{&ff}
,则会显示。当行尾样式为混合时,Vim会显示^M
。这意味着您使用了一个不像Vim那样聪明的文本编辑器,它没有遵循现有的行尾样式,而Vim默认会这样做。如果您在Windows上使用Vim或类似的软件,您将不会遇到这种破坏行尾的问题。 - Warren Young