Vim在每一行结束时显示^M。
我如何用在Vim中打开的文件中的普通换行符替换它?
Vim在每一行结束时显示^M。
我如何用在Vim中打开的文件中的普通换行符替换它?
当前回答
比如: : % s / \ r / / g 这招对我很管用。
它的作用是清除所有行的末尾,去掉^M,就是这样。
其他回答
在VIM命令模式下:
:e ++ff=dos | setl ff=unix | up
e++ ff=dos -强制打开dos格式的文件。
Setl ff=unix -将文件转换为unix格式。
上保存文件时,仅当已修改。
另外,还有称为dos2unix和unix2dos的开源实用程序可以做这件事。在linux系统上,它们可能是默认安装的;对于Windows系统,你可以从http://www.bastet.com/等网站下载。
命令
:%s/<Ctrl-V><Ctrl-M>/\r/g
其中<Ctrl-V><Ctrl-M>表示输入Ctrl+V然后Ctrl+M。
解释
:%s
替换,% =所有行
<Ctrl-V><Ctrl-M>
^M个字符(Ctrl- v是一种Vim方式来书写Ctrl ^字符,Ctrl-M将M写在正则表达式之后,结果是^M个特殊字符)
/\r/
带新线(\r)
g
并且全局执行(而不仅仅是行上的第一个事件)。
我花了一个下午的时间与\n ctrl-v 012作斗争(两者都为我提供null)。&费力通过这条线索,直到我到达metagrapher的。
\r对我来说很好!
/),/s/),/)\r/g
变成这样:
黑名单-extra:i386 (0.4.1, 0.4.1+nmu1), libmount1:i386 (2.20.1-5.1, 2.20.1-5.2), libblkid1:i386 (2.20.1-5.1, 2.20.1-5.2), libapt-pkg4.12:i386 (0.9.7.4, 0.9.7.5), nmap:i386 (6.00-0.1, 6.00-0.2), libsane-common:i386 (1.0.22-7.3,
变成这样:
26 libwv-1.2-4:i386 (1.2.9-3, automatic) openjdk-6-jre-headless:i386 (6b24-1.11.4-3, automatic) 28 jed:i386 (0.99.19-2.1)
魔法。我深深地感激
这个函数保存跳转列表
fun! Dos2unixFunction()
let _s=@/
let l = line(".")
let c = col(".")
try
set ff=unix
w!
"%s/\%x0d$//e
catch /E32:/
echo "Sorry, the file is not saved."
endtry
let @/=_s
call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()