我遇到过几次问题,因为vim的默认编码设置为latin1,我没有注意到并假定它使用utf-8。现在我想设置vim,使其在所有明显的情况下都可以正确地处理,并默认使用utf-8。
我想避免的问题:
- 强制以其他编码保存的文件(在我的更改之前是正常的)以utf-8格式打开,导致乱码。
- 强制不支持多字节字符(例如Windows XP终端)的终端尝试显示它们,导致乱码。
- 干扰其他程序读取或编辑这些文件的能力(我有一种(也许是不合理的)不愿意默认使用BOM的厌恶,因为我不清楚这是否容易搞砸其他程序)。
- 其他我无法猜测的问题(但希望您知道!)
到目前为止我所得到的:
if has("multi_byte")
if &termencoding == ""
let &termencoding = &encoding
endif
set encoding=utf-8 " better default than latin1
setglobal fileencoding=utf-8 " change default file encoding when writing new files
"setglobal bomb " use a BOM when writing new files
set fileencodings=ucs-bom,utf-8,latin1 " order to check for encodings when reading files
endif
这是从vim维基获取并稍作修改的内容。我将bomb
从setglobal fileencoding
移到了自己的语句中,因为否则它实际上不起作用。我还注释掉了那一行,因为我不确定BOMs是否有问题。
我正在寻找:
- 可能需要避免的风险
- 现有代码的问题
- 任何已经讨论/设置的链接
最终,我希望这能够成为一个无需思考的复制/粘贴片段,可在各种平台上设置vim的默认编码为utf-8。
编辑:目前我已将自己的答案标记为接受,据我所知它运行良好并涵盖了所有可以合理涵盖的方面。但这并非铁板钉钉;如果您有任何新信息,请随时回答!