在编辑器中查看换行符和回车符

有谁知道在Linux上的文本编辑器,让我看到换行符和回车? Vim是否支持这个function?

:set list在Vim中:set list将显示空白。 行尾显示为“ $ ”,回车通常显示为“ ^M ”。

不同意官方的回答:

:set list 不会显示^ M个字符(CR)。 为vi / vim提供-b选项将起作用。 或者,一旦加载了vim,input:e ++ff=unix

VI通过显示下一行的后续文本显示换行符(LF字符,代码x0A )。

使用-b开关进行二进制模式。 例如vi -b filename或者vim -b filename --

然后它将显示在Unix样式文件中通常不使用的CR字符( x0D )作为字符^M

尝试下面的命令。

:设置二进制

在VIM中,这应该和使用“-b”命令行选项一样。 如果你把它放在你的启动(即.vimrc)文件中,它将永远适合你。

在许多* nix系统中,有一个“dos2unix”或“unix2dos”命令,可以处理该文件并纠正任何可疑的行结束问题。 如果行结束没有问题,文件将不会被更改。

只是为了澄清原因:set list不会显示CR没有e ++ff=unix ,为什么:set list^M无关。

在内部,当Vim 读入一个文件到缓冲区时,它将用自己的表示replace所有的行结束字符(我们称之为$ )。 为了确定应该删除哪些字符,它首先检测文件中存储行结尾的格式。 如果只有CRLF '\r\n'或者只有CR '\r'或只有LF '\n'行尾字符,那么'fileformat'分别设置为dosmacunix

list选项设置时,无论检测到什么fileformat选项,Vim都会在出现换行时显示$字符。 它使用自己内部的换行符表示,这就是它显示的内容。

现在,当你向光盘写入缓冲区时,Vim根据检测到的fileformat选项插入换行符,必要时用适当的字符转换所有内部的$ 。 如果fileformat恰好是unix那么它将简单地写入\n来代替它的内部换行符。

诀窍是强制Vim读取一个dos编码的文件为unix 。 最终的结果是它将删除所有\n\r '不变,并将它们显示为^M的缓冲区中。 设置:set list将另外显示内部行尾为$ 。 毕竟,你可以看到^M$代替dos编码的换行符。

还要注意:set list与显示^M无关。 你可以自己检查(首先确保你已经禁用了list选项),方法是使用CTRL-V插入单个CR,然后在插入模式下Enter 。 将缓冲区写入光盘并再次打开之后,尽pipelist选项设置为0,您仍然可以使用^M

你可以在http://vim.wikia.com/wiki/File_formatfind关于文件格式的更多信息,或者在Vim中input:help 'fileformat'

我build议你编辑你的.vimrc文件,以运行命令列表。 编辑你的.vimrc文件,如下所示:

 cat >> ~/.vimrc <<EOF set ffs=unix set encoding=utf-8 set fileencoding=utf-8 set listchars=eol:¶ set list EOF 

当你执行vim时,会执行到.vimrc中的命令,你可以看到这个例子:

 My line with CRLF eol here ^M¶