vim用@ -signs显示文件的内容

我用vim打开一个文件event.txt并显示一些search结果。 这工作得很好,但是因为我在_vimrc做了一个更改,所以它显示了带有@ -signs的文件内容,所以它是不可读的。 看下面的图片。 带有@ -signs的event.txt 我在_vimrc中做了什么改变

 set fileencoding=utf-8 

但我评论它。 所以它不应该影响vim。

 "set fileencoding=utf-8 

该文件仍然显示不可读。 与其他编辑人员,我可以打开文件,并正常查看。 我前段时间有过这种行为,但是我以某种方式消失了。 我不记得了。

event.txt文件是我通过event.txt生成的Windows事件文件:

 get-eventlog -logname system > event.txt 

有些东西告诉我,这不是_vimrc的变化,也许是别的,但这是我记忆中最后一次的变化,在这之后它不起作用。

如何在vim中正常查看windows事件文件event.txt? 没有@标志。

那开始是一个字节顺序标记 (BOM),典型的Windows Unicode文本。 ^@是Vim对NUL值的表示,它(粗略地)显示为每个第二个字符。 所以,你有一个(大部分)ASCII文本文件,用UCS-2编码的小端:每个字符由两个字节(16位)表示,较低的一个首先出现。

你可以打开该文件

 :edit ++enc=ucs2-le event.txt 

但是最好正确设置Vim,以便自动检测它。 既然你在Windows上使用GVIM,我会建议把它

 :set encoding=utf-8 

~/.vimrc开头。 这会自动将你的'fileencodings'设置为默认的ucs-bom,utf-8,default,latin1 。 注意第一个元素; 这应该有助于检测文件。

不要在~/.vimrc设置'fileencoding' 这是一个缓冲区本地设置,它将在打开文件时由Vim自动设置。 'fileencodings' (注意复数)是影响检测的正确选项。