使用 vim/gvim 的话

请在 ~/.vimrc 里加一行

set fileencodings=utf-8,gbk,big5

vim就会自动识别编码了

也可以这样来做:

env LANG=zh_CN.UTF-8 vim /home/wangyao/.fcitx/config_bak

这个比较的通用,可以设置很多的程序的编码。

只要在命令的前面加一个env LANG=zh_CN.GB2312|zh_CN.GB18030|zh_CN.GBK|zh_CN.UTF-8

可以制定任意的中文编码

中文支持

Vim支持世界上的主要语言,当然也包括中文。如果你用Vim编辑中文,而中文不能正确显示,那有两种可能性:一是使用的Vim不完整,不含多字节语言支持(multi_byte特性);二是某个配置出了问题。

说到多语言支持,最基本的概念有两个:一是文件的语言编码,而是环境的内部编码。在较老的操作系统中,不管Linux还是Windows,这两个编码都

是一样的,也就意味着,一次只能处理一种编码的文件:要么只能处理西文编码(Latin1,即ISO-8859-1

[5]),要么只能处理中文编码(GB2312

[2])。而在新的操作系统中,这两者可以是不一样的。在Linux上,常见的情况是环境的内部编码使用UTF-8

[6],而UTF-8可以同任何一种语言编码作无损转换,这就保证了系统的多语言处理能力。Vim这方面秉承了Unix/Linux的传统,在内部编码使

UTF-8的时候,可以同时处理不同意语言编码的文件。

以下列出了和语言编码的相关的设置:

环境变量LANG(使用的语言);

环境变量LC_CTYPE(使用的内部编码);

Vim选项encoding(Vim的内部编码);

Vim选项termencoding(Vim在与屏幕/键盘交互时使用的编码);

Vim选项fileencoding(Vim当前编辑的文件在存储时的编码);

Vim选项fileencodings(Vim打开文件时的尝试使用的编码);

Vim选项ambiwidth(对"不明宽度"字符的处理方式;Vim 6.1.455后引入)。

如果你的环境只需要处理简体中文的话,那么,最简单的方式就是所有的设定全部使用简体中文。只需要:设定LANG=zh_CN.GB2312,不设定

LC_CTYPE(默认跟LANG一样),不设定与编码相关的Vim选项(默认由LANG和LC_CTYPE决定),也无需设定Vim选项

ambiwidth。也就是说,我们把语言设定为中国(CN)使用的中文(zh),编码为GB2312(注意:Vim内部并不识别国标GB18030

[3],所以此处只能设GB2312;参看下面关于UTF-8的讨论)。

不过,如果按照目前Linux下的惯例,内部编码一律使用

UTF-8的话,会有一些额外的好处,其中之一就是在这种情况下Vim支持同时编辑多种不同编码的文件,如简体中文和繁体中文(参见图2);另外,此时

Vim也可以通过编码转换支持GBK

[4]和GB18030了。这样,众多关于语言编码的Vim选项就有了用武之地了。下面进一步说明一下这些选项和推荐设定(如果适用的话):

图2

encoding=utf-8:不管文件的编码如何,不管如何显示和输入,Vim内部使用的编码是UTF-8;这是国际化支持的基础。

termencoding:

取决于实际的终端或X Window的设定。举例来说,如果选择语言简体中文登录到X Window,或者正在使用CXTERM

[10]的话,那么该选项应被设为GB2312;如果使用缺省的语言(LANG=en_US.UTF-8)登录到X Window,或者使用PuTTY

[11]远程访问Linux机器、并且设定里的字符编码(配置中Window-Translation)设为UTF-8的话,该选项就应该设为utf-

8。从Windows下使用PuTTY远程连接Linux的请特别注意,测试表明,仅在使用UTF-8的情况下,PuTTY才能可靠地支持中文的显示和输

入(显示字体必须设成中文字体)。

fileencoding:文件载入时,该选项被置为Vim认定的文件编码,因此,存储时文件的

编码不会改变。此处和下面fileencodings可使用的编码为libiconv支持的所有几百种编码(如果编译时包含了iconv特性的话),与中

文相关的有gb2312、gbk、gb18030、hz-gb-2312、iso-2022-cn、big5、cp936、cp950等。如果创建新文

件,你又不希望使用UTF-8作为文件编码时,那么,你可能需要手工设定该选项,如":set

fileencoding=gb2312"。需要注意的一点是,使用"set"来设定该选项的话会改变以后新建文件的缺省编码,而使用

"setlocal"的话则只影响当前文件(参考":help setlocal")。

fileencodings=ucs-bom,utf-8,chinese:Vim会首先判断文件的开头是否是一个Unicode

[7]的BOM(byte order

mark)字符[8],是的话则把文件的其余内容解释成相应的Unicode序列;否的话再试图把文件内容解释成UTF-8的序列;再失败的话,则把文件

解释为简体中文(chinese是一个跨平台的简体中文字符集的别名,Linux下相当于gb2312和euc-cn;此处也可以根据需要以

gb2312、gbk或gb18030等编码替代)。需要注意的是,该顺序不能颠倒,并且在后面再添加其它编码如big5、latin1也是没有意义的,

因为Vim不能识别8比特编码中的错误,因此这些编码后列的编码永远不会被用到。

ambiwidth=double:把所有的"不

明宽度"字符[9]--指的是在Unicode字符集中某些同时在东西方语言中使用的字符,如省略号、破折号、书名号和全角引号,在西方文字中通常字符宽

度等同于普通ASCII字符,而在东方文字中通常字符宽度等同于两倍的普通ASCII字符,因而其宽度"不明"--的宽度置为双倍字符宽度(中文字符宽

度)。此数值只在encoding设为utf-8或某一Unicode编码时才有效。需要额外注意的是,如果你通过终端使用Vim的话,需要令终端也将这

些字符显示为双宽度。比如,XTERM [12]的情况下应该使用选项"-cjk",即使用命令"uxterm

-cjk"来启动使用双宽度显示这些字符的Unicode

X终端;使用PuTTY远程连接的话则应在配置的Window-Translation中选中"Treat CJK ambiguous

characters as wide"(参见图3)。

图3

需要设定的选项通常放在用户的Vim资源配置文件中,即在~/.vimrc文件中加入:

set encoding=utf-8set fileencoding=chineseset fileencodings=ucs-bom,utf-8,chineseset ambiwidth=double

如果想进一步了解这些选项的话,可以使用":help

''选项''"查看帮助文档中的相关(英文)信息。帮助中也可以查到这些选项(以及命令)的缩写:本文中为方便理解,除一些极少有人使用完整拼写的命令如

": e(dit)"、":s(ubstitute)"等之外,一般使用完整拼写而不说明或使用缩写。关于配置文件.vimrc,可以使用":help

.vimrc"查看相关信息。

在使用内部编码UTF-8的情况下,如需编辑fileencodings之外(其不能自动识别)的文件,则可以使用以下命令:":e ++enc=编码 文件名"。详情可参考":help ++enc"。

阅读(7678) | 评论(0) | 转发(0) |

html编码自动识别,vi设置自动识别各种编码相关推荐

  1. html设置页面编码gbk,GBK及UTF-8网页编码定义与应用

    网页编码英文译为web page encoding,是在网页中指定其特定的字符编码格式的库. GBK是国家标准GB2312基础上扩容后兼容GB2312的标准.GBK的文字编码是用双字节来表示的,即不论 ...

  2. sqlyog更改字符集编码_MySQL 字符集设置

    Linux(Ubuntu)环境描述具体操作,Unux与其基本一致,Windows路径配置上少有不同. 我们将讨论以下几个问题: 字符集问题表征 修正配置,设置默认字符集编码 在使用过程中强制设置字符集 ...

  3. mysql 导入设置编码_从MySQL导出导入数据库的命令实例及设置会话字符编码

    1.导入导出 1.mysql导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > ...

  4. 【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )

    文章目录 安卓直播推流专栏博客总结 一. x264 编码器参数设置引入 二. 获取 x264 编码器参数 三. 设置 x264 编码器编码规格 四. 设置 x264 编码器编码图像数据格式 五. 设置 ...

  5. 默认访问首页 || 国际化||设置全局字符编码的默认设置

    默认访问首页 国际化 在spring中是这样配置的 1).编写国际化配置文件: 2).使用ResourceBundleMessageSource管理国际化资源文件 3).在页面使用 fmt:messa ...

  6. 1、代码中设置编码、编辑器中设置Python的编码

    1Python中文编码 1.1代码中设置编码 Python中默认的编码格式是ASCII格式,在没有修改编码格式时无法正确打印汉字,所以在读取中文的时候会报错. 解决办法为只要在文件开头加入 # -- ...

  7. 在Windows的CMD中如何设置支持UTF8编码?

    这个问题很多人开始都会不知道,当然包括曾经的我,当用到的时候,只好求助于伟大的股沟和度娘了.网上有设置的方法,但说明确不够详细系统,说设置字体 为:Lucida Console.问题是,在默认方式下, ...

  8. python代码编码成jni_python 设置文件编码格式的实现方法

    如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码.(python3已经没有这个问题了,python3默认的文件编码是UTF-8 ...

  9. php设置mysql 编码_php怎么设置mysql编码?

    在php中,可以使用mysql_query()函数来设置mysql编码,语法"mysql_query('SET NAMES 编码方式');":mysql_query()函数需要放置 ...

最新文章

  1. C库函数-perror()
  2. Eclipse插件打开编辑器
  3. 《XML程序设计》要点
  4. 看了这一篇,就不用看别的——Java中Object关于锁的的三个方法:wait,notify,notifyAll的作用
  5. PairOfDice示例
  6. python 写入csv 文件显示乱码_python 写入csv乱码问题解决方法
  7. linux.命令格式,【Linux基础知识】Linux命令格式介绍
  8. java数据存在ie中_[Java教程]解决在IE中获取数据的缓存问题,运行环境为node.js
  9. FreeRTOS的内存管理
  10. php redis 扩展安装
  11. 微信小程序学习笔记(阶段一)
  12. Transformer-XL 2
  13. FFmpeg转码B帧
  14. for函数python_for函数python
  15. 熬夜整理了一万多字的line-height总结,你还看不懂那我真的要跪了!
  16. 天津联通移动电信DNS
  17. 电脑从硬盘启动计算机,BIOS怎么设置成从硬盘启动?开启计算机或重新启动
  18. 物联网技术应用在智慧医疗的应用案例
  19. php 加密算法+接口安全技术
  20. python学习笔记全过程_Python学习过程笔记整理(四)

热门文章

  1. linux内核调度,Linux内核的三种调度策略
  2. python dll load failed_python安装MySQLdb的问题 ImportError: DLL load failed
  3. python辅助脚本教程_[Python] 用python做一个游戏辅助脚本,完整思路
  4. c语言合法自定义标识符_c语言合法标识符的要求是什么
  5. 程序员编程表达爱情php,2019浪漫情人节:8款程序员必备表白源码
  6. 导致集群重启_园区网核心交换机S7706异常重启导致无线网络故障
  7. 计算机网络 第二章 物理层
  8. 数据结构 1-0 绪论
  9. 机器学习之方差与偏差(bias-variance)
  10. 《视觉SLAM十四讲——从理论到实践》学习笔记