解决vim 显示乱码问题

甲: 首先查看系统对中文的支持
locale -a | grep zh_CN

乙: 存在3个变量:
1.    encoding (内部编码)    --该选项使用于缓冲的文本(你正在编辑的文件),寄存器,Vim 脚本文件等等。
2.     fileencoding(文件编码)    --该选项是vim写入文件时采用的编码类型。
3.     termencoding(输出编码)    --该选项代表输出到客户终端(Term)采用的编码类型。
进一步解释
encoding—-与系统当前locale相同,所以编辑文件的时候要考虑当前locale,否则要设置的东西就比较多了。
fileencoding—-vim打开文件时自动辨认其编码,fileencoding就为辨认的值。
        为空则保存文件时采用encoding的编码
termencoding—-默认空值,也就是输出到终端不进行编码转换。

解决乱码举例:
1. 一个文件,在windows下用gvim打开正常,在linux 用vim打开乱码。
观察:windows 下,查看. encoding(cp936), fileencoding(cp936), termencoding()
    linux (乱码), 查看 encoding(utf-8), fileencoding(latin1), termencoding()
分析:是fileencoding 检查出错所致, 但是查看 fileencodings 设置, gvim(windows) 和 vim(linux) 都是
    set fileencodings=utf-8,utf-16,cp936,cs-bom,latin-1
    可见在linux 下并没有真正检测出文件编码类型为 cp936(虽然它在前面), 而误认为latin-1

解决办法:
    1.指定以cp936格式重新加载文件。 e ++enc=cp936
      注意。不是se fileencodings=cp936, 那只是把文件保存为cp936
    2. 搞定vim 文件编码判定过程, 例如在首行添加一个中文。例如: //中文, 就能正确识别。推荐此法
  
总之,搞清这三个变量,可解决乱码问题。


你可能感兴趣的:(linux,windows,vim,终端,encoding)