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

时间:2010-10-05 02:42:18

标签: text-editor newline line-breaks carriage-return

有没有人知道Linux上的文本编辑器允许我查看换行符和回车符? Vim是否支持此功能?

8 个答案:

答案 0 :(得分:208)

不同意官方答复:

:set list显示^ M个字符(CR)。向vi / vim提供-b选项将起作用。或者,加载vim后,键入:e ++ff=unix

答案 1 :(得分:117)

Vim中的

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

答案 2 :(得分:75)

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

-b开关用于二进制模式。例如vi -b filenamevim -b filename --

然后它将显示CR字符(x0D),这些字符在Unix样式文件中通常不会用作字符^M

答案 3 :(得分:21)

只是为了澄清为什么:set list不会将^M显示为e ++ff=unix:set list以及为什么^M$无关。< / p>

在内部,当Vim 将文件读取到其缓冲区中时,它会用自己的表示替换所有行尾字符(让我们称之为'\r\n')。要确定应删除哪些字符,它首先检测行结尾存储在文件中的格式。如果只有CRLF '\r'或仅CR '\n'或只有LF 'fileformat'行尾字符,则dos设置为mac,{{1分别和unix

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

现在,当您写入缓冲区到光盘时,Vim会根据检测到的fileformat选项插入行尾字符,必须转换所有内部$的有适当的人物。如果fileformat恰好是unix,那么它只会写\n代替其内部换行符。

诀窍是强制Vim将dos编码的文件读作unix个文件。最终效果是它将删除所有\n的{​​{1}}未触及的内容,并将其显示为缓冲区中的\r。设置^M将另外显示内部行结尾为:set list。毕竟,您会看到$代替^M$编码的换行符。

另请注意,dos与显示:set list无关。您可以自行检查(确保首先禁用^M选项),在插入模式下使用list后跟CTRL-V插入单个CR。将缓冲区写入光盘并再次打开后,尽管Enter选项设置为0,您仍会^M

您可以在http://vim.wikia.com/wiki/File_format或在Vim中输入list找到有关文件格式的更多信息。

答案 4 :(得分:10)

尝试以下命令。

:设置二进制文件

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

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

答案 5 :(得分:5)

我建议您编辑.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¶

答案 6 :(得分:0)

您可以使用 gedit 编辑器查看中断线。

首先,如果尚未安装:

sudo apt-get install gedit

现在,安装 gedit插件

sudo apt-get install gedit-plugins

并选择 Draw Spaces 插件,在“偏好设置”上输入,然后选择绘制新线条

enter image description here

enter image description here

使用 VSCode ,您可以安装行尾扩展程序。

Sublime Text 3 具有一个名为 RawLineEdit 的插件,该插件将显示行尾并允许插入任意行尾类型

shift + ctrl + p并开始键入插件的名称,然后切换以显示行尾。

答案 7 :(得分:0)

使用cat-A,您可以将新行显示为$,将标签页显示为^I
cat -A myfile