我的locale用的是ZH-CN UTF-8,为了能让vim能正常显示中文,我将.vimrc的相关
部分设成:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
我怕设置成这样后用vim修改系统文件时,由于编码的转换可能某些信息会丢失,
从而引起系统出问题,虽然据我所知应该不会有问题,但是我想听听大家的意见!
或许会有更好的方法。
这样设置vim的编码会有问题吗?
-
- 帖子: 3
- 注册时间: 2009-01-07 0:16
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: 这样设置vim的编码会有问题吗?
☎ grep fenc .vimrc
set fencs=utf-8,cp936,gb18030,gbk,gb2312
你的拼写错误了?
set encoding=utf-8
这样吧。系统文件缺省都用utf-8保存的。
set fencs=utf-8,cp936,gb18030,gbk,gb2312
你的拼写错误了?
set encoding=utf-8
这样吧。系统文件缺省都用utf-8保存的。
● 鸣学
-
- 帖子: 2841
- 注册时间: 2006-09-11 22:47
Re: 这样设置vim的编码会有问题吗?
设置这个选项时必须明白,vim并不能猜测编码集,它的设定顺序是基于编码错误!zjm 写了:我的locale用的是ZH-CN UTF-8,为了能让vim能正常显示中文,我将.vimrc的相关
部分设成:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
我怕设置成这样后用vim修改系统文件时,由于编码的转换可能某些信息会丢失,
从而引起系统出问题,虽然据我所知应该不会有问题,但是我想听听大家的意见!
或许会有更好的方法。
fencs 设置为多个的前提是:对应的编码集能够判定相关错误。目前已知的能够良好的判断编码错误的只有ucs-bom和utf-8,我自己测试euc-cn也可以,那么如果放置其他任何的编码集,就会导致在这个编码集处停止尝试。
gbk,cp936编码集都是不判定错误的。因此,你这种设定当尝试了utf-8发现出错之后就直接使用gbk,完全不可能走到后面的ucs-bom。
我推荐的设置是:set fencs=ucs-bom,utf-8,euc-cn,cp936
实际上这里的cp936目前经测试是肯定在win和linux下都可用,而且正常支持gbk与gb18030编码的。
事实上ee的设置也有类似的问题存在,基于cp936的编码不能判定错误,后面的所有设置都是完全无效的。
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 3
- 注册时间: 2009-01-07 0:16
Re: 这样设置vim的编码会有问题吗?
恩,综和了各方面的信息,现在我把.vimrc改成:
set fileencodings=utf-8,ucs-bom,euc-cn,cp936
let &termencoding=&encoding
因为我也觉得系统文件默认也是utf-8编码的,就把他放最前面了
set fileencodings=utf-8,ucs-bom,euc-cn,cp936
let &termencoding=&encoding
因为我也觉得系统文件默认也是utf-8编码的,就把他放最前面了
-
- 帖子: 3
- 注册时间: 2009-01-07 0:16
Re: 这样设置vim的编码会有问题吗?
这是我从vim的帮助文档看到的内容:
'fileencodings' 'fencs' string (default: "ucs-bom",
"ucs-bom,utf-8,default,latin1" when
'encoding' is set to a Unicode value)
...................................................
The special value "ucs-bom" can be used to check for a Unicode BOM
(Byte Order Mark) at the start of the file. It must not be preceded
by "utf-8" or another Unicode encoding for this to work properly.
An entry for an 8-bit encoding (e.g., "latin1") should be the last,
because Vim cannot detect an error, thus the encoding is always
accepted.
所以我还是接纳poet的推荐,谢谢!
'fileencodings' 'fencs' string (default: "ucs-bom",
"ucs-bom,utf-8,default,latin1" when
'encoding' is set to a Unicode value)
...................................................
The special value "ucs-bom" can be used to check for a Unicode BOM
(Byte Order Mark) at the start of the file. It must not be preceded
by "utf-8" or another Unicode encoding for this to work properly.
An entry for an 8-bit encoding (e.g., "latin1") should be the last,
because Vim cannot detect an error, thus the encoding is always
accepted.
所以我还是接纳poet的推荐,谢谢!