美文网首页
Vim支持中文编码

Vim支持中文编码

作者: 刘军民 | 来源:发表于2017-01-15 16:31 被阅读812次

1、支持中文编码的基础

Vim要更好地支持中文编码需要两个特性:+multi_byte和+iconv,可以用|:version|命令检查当前使用的Vim是否支持,否则的话需要重新编译。

2、影响中文编码的设置项

Vim中有几个选项会影响对多字节编码的支持:

encoding(enc):encoding是Vim的内部使用编码,encoding的设置会影响Vim内部的Buffer、消息文字等。在 Unix环境下,encoding的默认设置等于locale;Windows环境下会和当前代码页相同。在中文Windows环境下encoding的 默认设置是cp936(GBK)。

fileencodings(fenc):Vim在打开文件时会根据fileencodings选项来识别文件编码,fileencodings可以同时设置多个编码,Vim会根据设置的顺序来猜测所打开文件的编码。

fileencoding(fencs) :Vim在保存新建文件时会根据fileencoding的设置编码来保存。如果是打开已有文件,Vim会根据打开文件时所识别的编码来保存,除非在保存时重新设置fileencoding。

termencodings(tenc):在终端环境下使用Vim时,通过termencoding项来告诉Vim终端所使用的编码。

3、Vim中的编码转换

Vim内部使用iconv库进行编码转换,如果这几个选项所设置的编码不一致,Vim就有可能会转换编码。打开已有文件时会从文件编码转换到 encoding所设置的编码;保存文件时会从encoding设置的编码转换到fileencoding对应的编码。经常会看到Vim提示[已转换],这是表明Vim内部作了编码转换。终端环境下使用Vim,会从termencoding设置的编码转换到encoding设置的编码。

可以用|:help encoding-values|列出Vim支持的所有编码。

4、具体应用环境的设置

只编辑GBK编码的文件

set fileencodings=cp936

set fileencoding=cp936

set encoding=cp936

只编辑UTF-8编码的中文文件

set fileencodings=utf-8

set fileencoding=utf-8

set encoding=cp936 或者 set encoding=utf-8

同时支持GBK和UTF-8编码

set fileencodings=ucs-bom,utf-8,cp936

set fileencoding=utf-8

set encoding=cp936 或者 set encoding=utf-8

如果在终端环境下使用Vim,需要设置termencoding和终端所使用的编码一致。例如:

set termencoding=cp936

或者

set termencoding=utf-8

Windows记事本编辑UTF-8编码文件时会在文件头上加上三个字节的BOM:EFBBBF。fileencodings中设 置ucs-bom的目的是为了能够兼容用记事本编辑的文件,不需要的话可以去掉。Vim在保存UTF-8编码的文件时会去掉BOM。去掉BOM的最大好 处是在Unix下能够使用cat a b>c来正确合并文件,这点经常被忽略。

5、FAQ

为什么在Vim中一次只能删除半个汉字?

因为encoding设置错误,把encoding设置为cp936就可以解决此问题。在Unix环境下Vim会根据locale来设置默认的encoding,如果没有正确设置locale并且没有设置encoding就会一次只能删除半个汉字。

Vim为什么不能输入繁体字?

把euc-cn或者GB2312改为cp936就可以了。euc-cn是GB2312的别名,不支持繁体汉字。cp936是GBK的别名,是GB2312的超集,可以支持繁体汉字。

Vim为什么提示不能转换?

因为在编译Vim时没有加入iconv选项,重新编译Vim才能解决。

如何打开一个GBK编码的文件并另存为UTF-8编码?

保存文件时运行命令|:set fileencoding=utf-8|就可以了。

相关文章

  • Vim支持中文编码

    1、支持中文编码的基础 Vim要更好地支持中文编码需要两个特性:+multi_byte和+iconv,可以用|:v...

  • windows下vim中文乱码问题解决

    在win7下,正常安装的vim出现中文乱码,原因是系统中文编码是gbk,而vim默认编码是utf-8。 首先是打开...

  • VIM中文支持

    tl,drWindows系统环境下gvim和vim的中文支持是不相同的。一般gvim按如下配置即可保证中文支持没有...

  • python编码问题:

    英文编码:ASCII 中文编码:GB2312 支持所有语言编码:unicode编码,两个字节 支持所有语言:UTF...

  • windows下vim中文乱码处理

    windows下vim中文乱码处理 现象:gvim安装后,打开中文utf-8编码的文件中文显示乱码处理:1、启动g...

  • mysql 插入汉字 异常:ERROR 1366 (HY000)

    字段编码不支持中文,把数据库或表的编码设置支持中文即可 原来创建的数据库: create database cha...

  • Git Bash vim、gvim编辑器中文编码问题

    Git Bash vim Git客户端默认情况下,vim编辑文本中文会出现乱码,这时候你在右键设置编码是没用的。 ...

  • Vim入门级基础配置

    介绍Vim配置文件.vimrc,配置Vim显示行号、支持utf8中文不乱码、突出显示Vim当前行,设置高亮显示括号...

  • CMD中文显示乱码解决办法

    当打开cmd时,输入命令后显示的中文乱码,是由于cmd当前代码页不支持命令输出的中文编码导致,常用的中文编码未GB...

  • 2020-01-09 GBK和UTF-8编码问题

    问题现象: 一些文档使用 Word,Vim及ATOM打开有中文的文档时,有时会有乱码,这是因为编码方式的不同。中文...

网友评论

      本文标题:Vim支持中文编码

      本文链接:https://www.haomeiwen.com/subject/rgaybttx.html