Answers:
DOS2UNIX的是一个命令行实用工具,将做到这一点,还是:%s/^M//g
会如果你使用Ctrl- v Ctrl- m输入^ M,或者你可以:set ff=unix
和vim会为你做它。
'fileformat'设置的文档在这里,并且vim Wiki上有关于行尾转换的完整页面。
另外,如果您来回移动文件很多,您可能不想转换它们,而是这样做了:set ff=dos
,因此vim会知道它是一个DOS文件,并使用DOS约定作为行尾。
:%s/^M//g
应该为:%s/\r//g
,因为^M
只是意味着“在行首匹配大写字母“ M””。
:%s/\r//g
为我工作,@
set ff=unix
什么也没做。也许它可以转换文件,但是所有^M
字符仍然存在。
更改视图中的行尾:
: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
:w +ff=unix
比这里写的大多数其他东西都好得多,bash脚本是一个不错的奖励。
:e
在我的Windows vim安装中,这些命令似乎没有执行任何操作。我的视图仍然显示^M
代码。
我通常使用
:%s/\r/\r/g
这似乎有点奇怪,但由于vim与换行符匹配的方式而起作用。我也发现它更容易记住:)
:set ff=unix
,但是我今天打开的文件一定特别奇怪。Vim表示已经,fileformat=unix
但是所有行的结尾都是^M
。这个解决方案对我有用。
:%s/\r//g
而是为我工作。
:%s/\r//g
是唯一的通用解决方案–特别是对于包含DOS和UNIX风格的换行符的异构混合的混合模式文件。该规范的解决方案(例如:set ff=unix
,:e ++ff=unix
),假设在同一换行符风格当前缓冲区两端的每一行。有时他们这样做;有时他们没有。提示悲伤的表情。
我更喜欢使用以下命令:
:set fileformat=unix
您还可以使用mac
或dos
将文件分别转换为macintosh或MS-DOS / MS-Windows文件约定。如果文件已经采用正确的格式,则不会执行任何操作。
有关更多信息,请参见vim帮助:
:help fileformat
^M
。
set fileformat=unix
到我的.vimrc文件有效。
:%s/\r+//g
在Vim中,这会删除所有回车符,并且仅保留换行符。
:%s/\r//g
它时,它就像一种魅力。
@ 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)
dos2unix
可以直接修改文件内容。
您可以直接在文件上使用它,而无需临时文件重定向。
dos2unix input.txt input.txt
上面使用了假定的美式键盘。使用-
437选项使用UK键盘。
dos2unix -437 input.txt input.txt
tr -d '\15\32' < winfile.txt > unixfile.txt
(请参阅:http : //kb.iu.edu/data/acux.html)
以下步骤可以将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
我发现了一种非常简单的方法:使用nano打开文件: nano file.txt
按CTRL+ O保存,但在按之前Enter,按:ALT+ D在DOS和Unix / Linux的行尾之间切换,或:ALT+ M在Mac和Unix / Linux的行尾之间切换,然后按Enter保存和CTRL+ X退出。
^M
结尾。另存为dos保留,另存为linux删除。可以检查使用cat -v
通常,dos2unix
您可以使用一个命令来执行此操作,只需确保您已阅读该手册,因为GNU和BSD版本在处理参数方面的方式有所不同。
BSD版本:
dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME
GNU版本:
dos2unix $FILENAME
或者,您可以dos2unix
在此处使用任何建议的答案来创建自己的答案,例如:
function dos2unix(){
[ "${!}" ] && [ -f "{$1}" ] || return 1;
{ echo ':set ff=unix';
echo ':wq';
} | vim "${1}";
}
我知道我在某个地方见过这个。这是FreeBSD登录提示:
是否需要从DOS文件中删除所有那些^ M字符?尝试
tr -d \\r < dosfile > newfile
-- Originally by Dru <genesis@istar.ca>
如果您在Windows的NotePad或NotePad ++中创建文件并将其带到Linux并通过vim打开它,您将在每行末尾看到^ M。要删除它,
在您的Linux终端上,键入
dos2unix filename.ext
这将完成所需的魔术。
hexdump -C badfile
并且发现0x0d 0x0a
"\r\n"
那是您的问题。