LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 999|回复: 8

关于arch中的vim的中文问题

[复制链接]
发表于 2005-4-17 16:15:32 | 显示全部楼层 |阅读模式
在utf8的locale下打开gb2312编码的文件乱码,set encoding/fileencoding/termencoding=cp936/gbk/euc-cn/prc/2byte-cp936全部失败 :ask ,locale是
LANG="en_US.UTF-8"
LC_CTYPE="zh_CN.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"
显示编辑utf8格式中文文档则一切正常。后来发现vim的gettext没有enable,决定重新编译vim,但是找不到enable gettext的选项,congfiure --help只有看到--disable-nls和gettext相关,--enable-nls编译后还是没有gettext,没办法,只好先用gedit了。

各位大侠可有解决的方案?
发表于 2005-4-17 21:44:31 | 显示全部楼层
确实没有enable gettext的选项,不知华华的方法是不是好用。http://www.linuxsir.cn/bbs/showt ... 9&highlight=VIM
回复 支持 反对

使用道具 举报

发表于 2005-4-17 22:01:34 | 显示全部楼层
用这个,自动选择字符编码的vimrc/gvimrc:
  1. " multi-encoding setting
  2. if has("multi_byte")
  3.   "set bomb
  4.   set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
  5.   " CJK environment detection and corresponding setting
  6.   if v:lang =~ "^zh_CN"
  7.     " Use cp936 to support GBK, euc-cn == gb2312
  8.     set encoding=cp936
  9.     set termencoding=cp936
  10.     set fileencoding=cp936
  11.   elseif v:lang =~ "^zh_TW"
  12.     " cp950, big5 or euc-tw
  13.     " Are they equal to each other?
  14.     set encoding=big5
  15.     set termencoding=big5
  16.     set fileencoding=big5
  17.   elseif v:lang =~ "^ko"
  18.     " Copied from someone's dotfile, untested
  19.     set encoding=euc-kr
  20.     set termencoding=euc-kr
  21.     set fileencoding=euc-kr
  22.   elseif v:lang =~ "^ja_JP"
  23.     " Copied from someone's dotfile, untested
  24.     set encoding=euc-jp
  25.     set termencoding=euc-jp
  26.     set fileencoding=euc-jp
  27.   endif
  28.   " Detect UTF-8 locale, and replace CJK setting if needed
  29.   if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
  30.     set encoding=utf-8
  31.     set termencoding=utf-8
  32.     set fileencoding=utf-8
  33.   endif
  34. else
  35.   echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
  36. endif
复制代码

绝对有用,也是论坛上搜到的。忘了作者了,不好意思。

注:我的locale:
[~]$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE=C
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-17 23:14:35 | 显示全部楼层
多谢上面的兄弟。
另外再问一下,在打开文件以后,再指定编码方式,能够及时生效吗?
就是打开文件后,再手动set encoding,我原来就是这样做的,但是没有效果,看来是是不行的。
回复 支持 反对

使用道具 举报

发表于 2005-4-18 09:49:45 | 显示全部楼层
Post by struggle
多谢上面的兄弟。
另外再问一下,在打开文件以后,再指定编码方式,能够及时生效吗?
就是打开文件后,再手动set encoding,我原来就是这样做的,但是没有效果,看来是是不行的。


打开后再设定好象不行。其实有些中文文件用gedit打开也不行的,不管选什么编码都一样。所以我打开中文文件一般都用gvim或vim,就是用上面的配置。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-18 10:52:08 | 显示全部楼层
看来好像不打开gettext也正常,奇怪了。。
回复 支持 反对

使用道具 举报

发表于 2005-4-18 12:35:45 | 显示全部楼层
呵呵,好用就行了。
回复 支持 反对

使用道具 举报

发表于 2005-4-19 14:19:21 | 显示全部楼层
这个果然好用。多谢了。
回复 支持 反对

使用道具 举报

发表于 2005-4-19 21:32:48 | 显示全部楼层
Good!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表