在Vim中将DOS行尾转换为Linux行尾
如果打开在Windows中创建的文件,则所有行均以^ M
结尾。
如何一次删除所有这些字符?
解决方案
回答
:%s/\r+//g
在Vim中,这会删除所有回车符,并仅保留换行符。
回答
:g/Ctrl-v Ctrl-m/s///
<KBD> Ctrl <KBD> M是DOS行尾添加的字符\ r或者回车符。 <KBD> Ctrl <KBD> V告诉vim在命令行中插入文字<KBD> Ctrl <KBD> M字符。
总体而言,此命令将所有\ r
替换为空,将它们从行尾删除。
回答
dos2unix是可以执行此操作的命令行实用程序,如果我们使用Ctrl-v Ctrl + m来输入^ M,则:%s / ^ M // g
或者:set ff = unix`,而vim会为我们完成。
"文件格式"设置上的文档在这里,并且vim Wiki上有关于行尾转换的完整页面。
另外,如果我们来回移动文件很多,我们可能不想转换它们,而是执行:set ff = dos
,因此vim会知道它是一个DOS文件,并使用DOS约定作为行尾。
回答
我们可以使用以下命令::%s / ^ V ^ M // g
其中的" ^"表示使用" CTRL"键。
回答
使用以下命令:
:%s/^M$//g
使" ^ M"出现,先键入<KBD> Ctrl <KBD> V,然后键入<KBD> Ctrl <KBD> M。 <KBD> Ctrl <KBD> V告诉Vim接受字面输入的下一个字符。
回答
来自:http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc]:%s / \ r $ //
回答
我更喜欢使用以下命令:
:set fileformat=unix
我们也可以使用mac
或者dos
分别将文件转换为macintosh或者MS-DOS / MS-Windows文件约定。如果文件已经采用正确的格式,则不会执行任何操作。
有关更多信息,请参见vim帮助:
:help fileformat
回答
:set fileformat = unix
可以将dos转换为unix。
回答
更改视图中的行尾:
:e ++ff=dos :e ++ff=mac :e ++ff=unix
这也可以用作保存操作(仅:w不会使用我们在屏幕上看到的行尾进行保存):
:w ++ff=dos :w ++ff=mac :w ++ff=unix
我们可以从命令行使用它:
for file in $(ls *cpp) do vi +':w ++ff=unix' +':q' ${file} done
回答
我通常使用
:%s/\r/\r/g
这似乎有点奇怪,但由于vim与换行符匹配的方式而起作用。我还发现它更容易记住:)
回答
通常,我们可以使用一个" dos2unix"命令,只需确保我们已阅读手册即可,因为GNU和BSD版本在处理参数的方式上有所不同。
BSD版本:
dos2unix $FILENAME $FILENAME_OUT mv $FILENAME_OUT $FILENAME
GNU版本:
dos2unix $FILENAME
另外,我们也可以在此处使用任何建议的答案来创建自己的dos2unix
,例如:
function dos2unix(){ [ "${!}" ] && [ -f "{}" ] || return 1; { echo ':set ff=unix'; echo ':wq'; } | vim ""; }
回答
dos2unix可以直接修改文件内容。
我们可以直接在文件上使用它,而无需临时文件重定向。
dos2unix input.txt input.txt
上面使用了假定的美式键盘。使用-
437选项来使用英国键盘。
dos2unix -437 input.txt input.txt