在编辑器中查看换行符和回车符
有谁知道在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'
分别设置为dos
, mac
和unix
。
当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¶