打开该类型的文件时是否可以自动设置UTF16文件编码?

时间:2012-10-19 08:38:49

标签: vim

我使用Vim编辑各种文件(因为我确信大多数Vim用户都这样做)。我遇到的一个错误就是Vim在遇到带有奇数编码的文件时所做的事情。大多数编辑(这些天)在检测文件编码方面做得很好。但是,Vim通常不会。你必须打字,例如:

:e ++enc=utf-16le

以UTF-16重新读取文件(否则你会得到大量的@符号)

我一直在搜索,看过像set_utf8.vim这样可以检测特定文件编码的脚本。但是,有更一般的解决方案吗?我有点无聊,必须手动计算文件编码是什么,并在每次打开一个不寻常的文件时咨询帮助。

3 个答案:

答案 0 :(得分:15)

将编码名称添加到'fileencodings'应该可以解决问题:

:set fencs=ucs-bom,utf-16le,utf-8,default,latin1

或者,有AutoFencfencview等插件。

答案 1 :(得分:2)

你有字节顺序标记吗? Vim应该检测到这一点并正常工作。来自the doc - section 45.4

  

当你开始编辑那个16位的Unicode文件时,它有一个BOM,Vim   将检测到这一点并在读取时将文件转换为utf-8。该   'fileencoding'选项(最后没有s)设置为检测到的   值。在这种情况下,它是“utf-16le”。这意味着它是Unicode,   16位和小端。此文件格式在MS-Windows上很常见   (例如,对于注册表文件)。

答案 2 :(得分:1)

将此代码添加到 .vimrc

if has("multi_byte")
  if &termencoding == ""
    let &termencoding = &encoding
  endif
  set encoding=utf-8
  setglobal fileencoding=utf-8
  "setglobal bomb
  set fileencodings=ucs-bom,utf-8,latin1
endif