vim中显示不可见字符

1、查看文件的隐藏内容

对于命令行来说,如果要查看一个文件的隐藏信息,可以通过 cat + -A 的形式,输出隐藏信息
eg:

# cat -A i18n
M-oM-;M-?LANG=zh_CN$$

可以看到,文件的隐藏内容被输出出来了。
如果需要在vim里面查询呢?

2、vim查看文件的隐藏信息

方式1:通过 :set invlist,但是这种方式只会显示^I $ 这样的字符
方式2:通过 :%!cat -A 可以查看具体的信息

案例:
这里有两个文件,不显示文件的内容,直接cat 或者 vim查看的时候,文件内容是一样,但是通过cksum检查文件的大小以及crc校验和,发现不一致;
分析:正常情况下,如果文件的内容是一样的,那么校验和和大小应该是一直的才对。
解决办法:
① 通过diff对比两个文件

[root@yjt tmp]# diff i18n i18n_ok 
1c1
< ?LANG=zh_CN$
---
> LANG=zh_CN

很明显的发现,两个文件的内容居然不一致,这个时候可以猜想文件里面可能存在其他的字符,像隐藏字符,空格,空行等。
② 通过cat -A 文件名字 查看文件的隐藏信息,发现对比两个文件,确实不一样

[root@yjt tmp]# cat -A i18n
M-oM-;M-?LANG=zh_CN$$
[root@yjt tmp]# cat -A i18n_ok 
LANG=zh_CN$

③ 通过vim的方式,删除隐藏的字符,然后保存,发现从新打开的时候,隐藏字符又出现了。这个时候怀疑到文件的存储格式可能不一致
④ 通过file命令检查文件的格式

[root@yjt tmp]# file i18n
i18n: UTF-8 Unicode (with BOM) text
[root@yjt tmp]# file i18n_ok 
i18n_ok: ASCII text

果不其然,文件的格式不一样,导致看是文件的内容一致,但是文件的大小以及校验和却不一样。

原文地址:https://www.cnblogs.com/yjt1993/p/13278431.html