如果我打开我在Windows中创建的文件,则所有行都以^M
.
如何一次删除这些字符?
dos2unix是一个命令行实用程序,它将执行此操作,或者:%s/^M//g
如果您使用Ctrl- v Ctrl- m输入^ M,或者您可以:set ff=unix
和vim将为您执行此操作.
'fileformat'设置上的文档在这里,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与换行符的方式相同而起作用.我也发现它更容易记住:)
我更喜欢使用以下命令:
:set fileformat=unix
您还可以使用mac
或dos
分别将文件转换为macintosh或MS-DOS/MS-Windows文件约定.如果文件格式正确,则无效.
有关更多信息,请参阅vim帮助:
:help fileformat
:%s/\r+//g
在Vim中,它会删除所有回车符,并只留下换行符.
:set fileformat=unix
把dos转换成unix.
来自:http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc]:%s /\r $ $
dos2unix
可以直接修改文件内容.
您可以直接在文件上使用它,而无需临时文件重定向.
dos2unix input.txt input.txt
以上使用假定的美国键盘.使用-
437选项可以使用英国键盘.
dos2unix -437 input.txt input.txt
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
另外,如上所述,^ M = Ctrl+V+ Ctrl+M(不要只输入插入符"^"符号和M)
tr -d '\15\32' < winfile.txt > unixfile.txt
(见:http://kb.iu.edu/data/acux.html)
使用以下命令:
:%s/^M$//g
然后获取^M
出现的类型. 告诉Vim从字面上输入下一个字符.CtrlVCtrlMCtrlV
以下步骤可以将dos的文件格式转换为unix:
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1] :setlocal ff=unix This buffer will use LF-only line endings when written.[A 2] :w Write buffer using unix (LF-only) line endings.
参考:http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix