bash中的'cat -A'和vim中的'set list'之间的区别

时间:2014-06-03 14:32:49

标签: bash vim cat

档案为bidd.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这是什么意思?

this other question

中的情况不一样

谢谢。

2 个答案:

答案 0 :(得分:3)

在vim中,输入

:set ff?

我想它会以

回复
fileformat=dos

这意味着行尾是␍␊^M^J\r\n),而不仅仅是^J\n) 。如果所有换行符始终是相同的双字节序列,则在打开文件时由vim自动检测。

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

:e ++ff=unix

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

答案 1 :(得分:1)

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

Vim是多平台的,可以检测不同行结尾的(一致)使用。您的文件显然具有Windows样式的CR-LF行结尾,因此Vim只显示$ sigil。

要更改它,您可以在打开时显式指定fileformat:

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

如果你只是在Linux / Unix系统上,使用seddos2unix或者{{1}},或者将源文件转换为Unix风格的行结尾可能是最容易的。 VIM。