【发布时间】:2011-03-29 19:02:35
【问题描述】:
我遇到了几次问题,因为 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 wiki 中提取并稍作修改的。我将bomb 从setglobal fileencoding 移到了它自己的语句中,否则它实际上不起作用。由于我对 BOM 的不确定性,我还注释掉了该行。
我在寻找什么:
- 我错过的可能避免的陷阱
- 现有代码存在问题
- 链接到已讨论/已列出的任何地方
最终,我希望这会产生一个无需考虑的复制/粘贴 sn-p,它将默认为 utf-8 设置 vim,跨平台工作。
编辑:我已经将我自己的答案标记为目前已接受,据我所知,它可以正常工作并考虑到它可以合理解释的所有事情。但这不是一成不变的。如果您有任何新信息,请随时回答!
【问题讨论】:
标签: vim unicode encoding utf-8