2012-08-31 41 views
11

我不希望VIM从来都是把在任何特定的编码方式我的数据文件的数据的逐字节表示。换句话说,当我在vim的时候,我想,我的光标上的字符以对应于实际字节该字节,而不是一个UTF *(等)表示。如何获得VIM显示

我需要使用vim来分析造成其他人做出的Unicode转换错误的问题(使用其他软件),因此,重要的是我看到了什么是真正在那里。

例如,在Cygwin的vim的,我已经能够看到UTF-8物料清单作为

[文件数据的START]

这是完美的。我认识到这是一个UTF-8 BOM,如果我想知道每个字符的十六进制是什么,我可以将光标放在字符上并使用'ga'。

我最近买了一个合适的Linux机器(Fedora的)。在/ etc/vimrc里,这条线存在

组fileencodings = UCS-BOM,UTF-8,latin1的

当我看这台机器上的UTF-8 BOM中,BOM是完全隐。

当我添加下列行来的〜/ .vimrc

组fileencodings = LATIN1

我看到

AA»Â¿

前3个字符是BOM(当使用ga时)。我不知道最后3个字符是什么。

在一个点上,我甚至看到了UTF-8 BOM表示为 “FEFF” - 的UTF-16 BOM。

无论如何,你看我的问题。我需要确切地看到我的文件中没有vim为我解释字节。我知道我可以使用xxd,od等,但vim作为分析工具一直非常方便。另外,我希望能够编辑这些文件并保存它们而不存在任何转换问题。

感谢您的帮助。

+4

请注意:只要有人写道,甚至认为“UTF-8 BOM”,一只小猫就会死亡。 – zzzz

回答

14

使用'binary'模式:

:edit ++bin file 

vim -b file 

:help 'binary'

把 'fileencoding' 和 'fileencodings' 选项将不被使用时, 文件阅读而不转换。

+0

谢谢。这是一个非常合理的建议,但我得到了相同的结果。 –

5

该序列实际上是U + FEFF(BOM)编码的UTF-8,解码的latin1,编码的UTF-8和解码的latin1。 是U + FEFF(BOM)编码为UTF-8并解码为latin1。你无法摆脱编码。这些不是实际字节,它们是从不正确的解码中显示的拉丁字符。如果你想要字节,使用十六进制编辑器;否则,请使用正确的解码。

5

加载文件后,我从:e ++enc=latin1中获得了一些很好的里程(VIm对编码的初始猜测在这个阶段并不重要)。

+0

这是非常有帮助的 – Tommy