bash中的'cat -A'和vim中的'set list'之间的差异



文件为bid.nus.edu.sg/group/TTD/filedownload.asp? File =flatfiles/drug-disease - ttd2013 .txt

当我使用cat -A drug-disease_TTD2013.txt时,它在每行的末尾显示^M$。在vim中,有set list,只有$,没有^M

sed 's/r//' drug-disease_TTD2013.txt >1.t可以使它相同。但我不知道为什么?(修订)

也在cat的手册:-v use ^ and M- notation, except for LFD and TAB这是什么意思?

在另一个问题中不是同样的情况

谢谢。

在vim中输入

:set ff?

我想它会以

回应
fileformat=dos

这意味着行尾是␍␊ (^M^J, rn)而不仅仅是 (^J, n)。当打开文件时,如果所有换行符都是相同的两字节序列,vim会自动检测到这一点。

要在unix模式下重新打开文件,只需键入:

:e ++ff=unix

现在将显示^M字符。即使没有list选项,它也会显示它们,因为它们现在作为常规字符在缓冲区中。

cat是一个Unix工具,因此需要平台的行结束符LF (^J)。

Vim是多平台的,可以检测(一致地)使用不同的行结尾。你的文件显然有windows风格的CR-LF行结尾,所以Vim只显示$符号。

要改变这一点,您可以在打开时显式指定文件格式:

$ vim -c 'set list' -c 'edit ++fileformat=unix drug-disease_TTD2013.txt'

如果您只是在Linux/Unix系统上,那么使用seddos2unix或Vim将源文件转换为Unix风格的行尾可能是最简单的。

最新更新