同事反映在一台服务器上用vim打开含有中文的文件,会出现乱码。按照之前的经验,这个乱码问题很好解决,只要修改.vimrc文件即可,就给同事说,稍等,马上搞定。结果崩溃的历程开始了。。。
1、首先确认文件的编码:
[ root@ mullen tmp] $ file b.py
b.py: UTF-8 Unicode text
OK,编码正常。
2、确认ssh终端的编码,也为UTF8
3、确认服务器用户目录下是否有.vimrc文件,以及其中的配置
[ slide@ mullen tmp] $ cat ~/ .vimrc
set fileencodings =utf-8 ,gb2312,gbk,cp936,big5,ucs-bom
set encoding =utf-8
set termencoding =utf-8
set fileencoding =utf-8
OK,vim设置也正常
4、继续确认系统编码
[ slide@ mullen tmp] $ cat / etc/ sysconfig/ i18n
LANG ="en_US.UTF-8:zh_CN.gbk:zh_CN.UTF-8"
SUPPORTED ="zh_CN.UTF-8:zh_CN.GB2312:zh_CN.gbk:zh_CN:en_US.UTF-8:en_US:en"
SYSFONT ="latarcyrheb-sun16"
LC_ALL ="en_US.UTF-8"
export LC_ALL
也正常,这下傻眼了。。。问题到底出在哪呢?google,翻墙,均未发现任何有用的信息,翻来覆去就是修改vimrc,i18n的配置
5、俺就不信,继续寻求,查看vim的安装
[ slide@ mullen tmp] $ rpm -qa | grep vim
vim-minimal-7.0.109-6.el5
vim-enhanced-7.0.109-6.el5
vim-common-7.0.109-6.el5
也正常
6、系统的字体
[ slide@ mullen tmp] $ rpm -qa | grep font
xorg-x11-font-utils-7.1 -2
libXfontcache-1.0.2-3.1
fontconfig-2.4.1-7.el5
xorg-x11-fonts-base-7.1 -2.1.el5
libfontenc-1.0.2-2.2.el5
bitstream-vera-fonts-1.10 -7
bitmap-fonts-0.3 -5.1.1
xorg-x11-fonts-Type1-7.1 -2.1.el5
fontconfig-devel-2.4.1-7.el5
chkfontpath-1.10.1-1.1
fontconfig-devel-2.4.1-7.el5
libXfont-1.2.2-1.0.3.el5_1
fontconfig-2.4.1-7.el5
fonts-chinese-3.02 -12.el5
urw-fonts-2.3 -6.1.1
关键的几个都装了,连fonts-chinese 都安装了。
7、查看系统locale
[ slide@ mullen tmp] $ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
咦?报错,难道是这里的问题?赶紧的google,有人说是缺少glibc-common这个库,
[ slide@ mullen tmp] $ rpm -qa | grep glibc-common
glibc-common-2.5
明明有这个库啊,不过发现这个库的名字不正常,用yum install glibc-common更新一下
果然需要更新,更新完毕后再看
[ slide@ mullen tmp] $ rpm -qa | grep glibc-common
glibc-common-2.5 -81.el5_8.2
再执行locale
[ slide@ mullen tmp] $ locale
LANG =en_US.UTF-8 :zh_CN.gbk:zh_CN.UTF-8
LC_CTYPE ="en_US.UTF-8"
LC_NUMERIC ="en_US.UTF-8"
LC_TIME ="en_US.UTF-8"
LC_COLLATE ="en_US.UTF-8"
LC_MONETARY ="en_US.UTF-8"
LC_MESSAGES ="en_US.UTF-8"
LC_PAPER ="en_US.UTF-8"
LC_NAME ="en_US.UTF-8"
LC_ADDRESS ="en_US.UTF-8"
LC_TELEPHONE ="en_US.UTF-8"
LC_MEASUREMENT ="en_US.UTF-8"
LC_IDENTIFICATION ="en_US.UTF-8"
LC_ALL =en_US.UTF-8
这次locale正常了,喜滋滋的打开文件,还是乱码。。。不是吧,真的快要崩溃了。
8、折腾呀,折腾了2天,就快要放弃的时候
偶尔发现软件包的目录(我每台服务器上有个专门的目录来存放软件包)有个vim-7.3的文件夹和vim-7.3.tar.bz2的文件,莫非我手动安装过vim?
赶紧查看系统的vim命令
[ slide@ mullen tmp] $ whereis vim
vim : / usr/ bin/ vim / usr/ local/ bin/ vim / usr/ share/ vim / usr/ share/ man/ man1/ vim.1.gz
[ slide@ mullen tmp] $ ls -al / usr/ bin/ vim
-rwxr-xr-x 1 root root 2873984 Sep 20 2009 / usr/ bin/ vim
[ slide@ mullen tmp] $ ls -al / usr/ local/ bin/ vim
-rwxr-xr-x 1 root root 1509016 Jul 14 2011 / usr/ local/ bin/ vim
这2个vim的时间不对,分别执行一下发现/usr/bin/vim是7.0.237而/usr/local/bin/vim是7.3版本,看情形应该是7.3这个版本的vim对中文支持不是很好,移动到其他目录,然后做个软连接
[ slide@ mullen tmp] $ mv / usr/ local/ bin/ vim / usr/ local/ bin/ vim73
[ slide@ mullen tmp] $ ln -s / usr/ bin/ vim / usr/ local/ bin/ vim