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


177

有谁知道Linux上的文本编辑器,使我可以查看换行符和回车符?Vim是否支持此功能?


注意:有时在许多配色方案中以及在使用腻子ssh时都隐藏了换行符($)和回车符(^ M)。
Vanessa Sanchez'17年

1
OP,我认为您应该重新考虑所选的答案。因为选择的答案不起作用。但是CaptSaltyJack的答案效果很好。
JavaSheriff

OP这两个都将显示@arno的解决方案。我需要同时查看,因为我有一个随机使用所有3种文件格式的文件...而且arno的解决方案有效
Wayne Walker

Answers:


137

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



252
不正确,:set list将不会显示^M字符(CR)。-b向vi / vim 提供选项将起作用。或者,一旦加载了vim,请输入::e ++ff=unix
CaptSaltyJack

15
仅供参考,要关闭“设置列表”模式,请使用:set nolist
Tomofumi

@Tomofumi欢迎您提出修改意见!
Pipo

1
错误的答案。:set列表将不显示^ M个字符(CR)。使用-b选项可以使vi / vim正常工作。
nanosoft's

264

反对官方答复:

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


4
这是语法。 :help edit显示e[dit]! [++opt] [+cmd]。并:help ++e[++ opt]参数可用于强制使用'fileformat'[..]的值
丹尼斯,2015年

19
为了澄清起见,:set list显示换行符($),:e ++ff=unix显示CR(^M);如果您想同时看到两者,:set list那么:e ++ff=unix
杨艺博

5
为了扩展@dennis的注释,:set ff=unix告诉Vim 将行尾更改为Unix风格(作为设置文件格式的一部分),因此^ M字符不再在那里(因此不显示)。:e ++ff=unix告诉它强制设置文件格式为unix而不实际更改内容。因此vim像Unix文件一样读取它,将CR字符视为多余字符,并将其显示为^ M。
sundar-恢复莫妮卡

2
无论是仍然不为我工作,vim出于某种原因......我的意思是没有-b选择,也没有:e ++ff=unix在里面:(
RAM237

3
好的,:e ++ ff = unix工作正常。现在如何关闭它?
Croo

78

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

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

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


我通常不需要查看行尾,因为我主要在Unix环境中工作。但是,如果文件中有Windows类型的行尾,我希望得到警告。将vi -b filename还是:set binary仅显示^M它是否为Windows类型的文件,否则是否没有其他行尾?
alpha_989

30

只是为了阐明为什么:set list不将CR显示为^M没有e ++ff=unix,为什么与CR :set list无关^M

在内部,当Vim 文件入其缓冲区时,它将用其自己的表示形式替换所有行尾字符(我们称其为$)。为了确定应删除哪些字符,它首先检测文件中以哪种格式存储行尾。如果只有CRLF '\r\n'或仅CR '\r'或仅LF '\n'行结束字符,则'fileformat'设置为dosmacunix分别。

list选项设置,Vim的显示$字符,当断行发生的无论什么fileformat已被检测选项。它使用自己的内部换行符表示,这就是它的显示内容。

现在,当您缓冲区写入光盘时,Vim会根据fileformat检测到的选项插入行尾字符,实际上是将所有这些内部$的字符转换为适当的字符。如果fileformat碰巧发生了,unix那么它将简单地\n代替其内部换行来写入。

诀窍是迫使Vim读取一个dos编码文件unix。净效应是,它会删除所有\n的留下\r的不变并将其显示为^M“在你的缓冲区。设置:set list还会将内部行尾显示为$。毕竟,您会看到^M$代替dos编码的换行符。

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

您可以在http://vim.wikia.com/wiki/File_format或键入:help 'fileformat'Vim 来找到有关文件格式的更多信息。


11

请尝试以下命令。

:set二进制

在VIM中,此操作应与使用“ -b”命令行选项相同。如果将其放在启动文件(即.vimrc)中,它将始终为您准备就绪。

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


不幸的是,在我的系统中(Ubuntu 16.04)set binary与相同vim -b filename.py。知道为什么吗?我确实检查了help,看来您所说的大致正确。我如何弄清楚为什么会这样呢?
alpha_989

:e ++ff=unix确实显示^M正确,并且在使用unix类型文件时不显示。.所以我想问题
暂时

6

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

2

通过使用cat-A您可以将新行显示为$,将制表符显示为^I
cat -A myfile


0

您可以使用gedit编辑器查看换行符。

首先,如果您尚未安装:

sudo apt-get install gedit

现在,安装gedit插件

sudo apt-get install gedit-plugins

并选择Draw Spaces插件,在Preferences上输入,然后选择Draw new lines

在此处输入图片说明

在此处输入图片说明

使用VSCode,您可以安装Line Ends扩展。

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

shift + ctrl + p 然后输入插件名称,然后切换以显示行尾。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.