【问题标题】:vim displays content of file with @-signsvim 用@-signs 显示文件内容
【发布时间】:2024-01-21 03:38:01
【问题描述】:

我用 vim 打开了一个文件event.txt 并显示了一些搜索结果。这工作得很好,但由于我对_vimrc 进行了更改,它显示带有@-signs 的文件内容,因此它是不可读的。见下图。 我在_vimrc 中所做的更改是

set fileencoding=utf-8

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

"set fileencoding=utf-8

文件仍显示为不可读。使用其他编辑器,我可以打开文件并正常查看。前段时间我有这种行为,但我不知何故消失了。我不记得了。

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

get-eventlog -logname system > event.txt

有些东西告诉我这不是_vimrc 的变化,也许还有别的,但这是我记得的最后一个变化,之后它就不起作用了。

如何在 vim 中查看 windows 事件文件 event.txt normaly?没有@-signs。

【问题讨论】:

标签: windows file powershell vim encoding


【解决方案1】:

开头的ÿþ 是一个字节顺序标记 (BOM),典型用于Windows Unicode 文本。 ^@ 是 Vim 对 NUL 值的表示,它(大致)每隔一个字符出现一次。因此,您有一个(大部分)ASCII 文本文件,以 UCS-2 little endian 编码:每个字符由两个字节(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'(注意复数)是影响检测的正确选项。

【讨论】:

  • :set encoding=utf-8 工作完美。谢谢。以及详细的解释。