协慌网

登录 贡献 社区

在 Vim 中将 DOS 行尾转换为 Linux 行尾

如果打开在 Windows 中创建的文件,则所有行均以^M结尾。如何一次删除所有这些字符?

答案

dos2unix是将执行此操作的命令行实用程序,如果使用Ctrl - v Ctrl - m输入 ^ M, :%s/^M//g :set ff=unix并且 Vim 会执行以下操作:你。

有关于文件格式设置的文档,并且 Vim Wiki 上有关于行尾转换的完整页面。

另外,如果您来回移动文件很多,您可能不想转换它们,而是执行:set ff=dos ,因此 Vim 将知道它是一个 DOS 文件,并使用 DOS 约定作为行尾。

更改视图中的行尾:

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

这也可以用作保存操作(仅:w 不会使用您在屏幕上看到的行尾进行保存):

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

您可以从命令行使用它:

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done

我通常使用

:%s/\r/\r/g

这似乎有点奇怪,但由于 Vim 与换行符匹配的方式而起作用。我也发现它更容易记住:)