Vim对中文编码的支持
来源:互联网 发布:淘宝app 首页动态布局 编辑:程序博客网 时间:2024/06/05 01:14
1、支持中文编码的基础
Vim
要更好地支持中文编码需要两个特性:+multi_byte和+iconv,可以用|:version|命令检查当前使用的Vim是否支持,否则的话需要重新编译。
2、影响中文编码的设置项
Vim中有几个选项会影响对多字节编码的支持:
3、Vim中的编码转换
Vim内部使用iconv库进行编码转换,如果这几个选项所设置的编码不一致,Vim就有可能会转换编码。打开已有文件时会从文件编码转换到encoding所设置的编码;保存文件时会从encoding设置的编码转换到fileencoding对应的编码。经常会看到Vim提示[已转换],这是表明Vim内部作了编码转换。终端环境下使用Vim,会从termencoding设置的编码转换到encoding设置的编码。
可以用|:help encoding-values|列出Vim支持的所有编码。
4、具体应用环境的设置
set fileencodings=cp936
set fileencoding=cp936
set encoding=cp936
set fileencodings=utf-8
set fileencoding=utf-8
set encoding=cp936 或者 set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8
set encoding=cp936 或者 set encoding=utf-8
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|就可以了。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/16471/showart_327342.html
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
因为encoding设置错误,把encoding设置为cp936就可以解决此问题。在Unix环境下Vim会根据locale来设置默认的encoding,如果没有正确设置locale并且没有设置encoding就会一次只能删除半个汉字。
把euc-cn或者GB2312改为cp936就可以了。euc-cn是GB2312的别名,不支持繁体汉字。cp936是GBK的别名,是GB2312的超集,可以支持繁体汉字。
因为在编译Vim时没有加入iconv选项,重新编译Vim才能解决。
保存文件时运行命令|:set fileencoding=utf-8|就可以了。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/16471/showart_327342.html
- Vim对中文编码的支持
- Ubuntu下terminal、vim、gedit对中文的支持
- 设置vim支持中文编码GB2312和Unicode编码UTF8
- Ubuntu下terminal、vim、gedit对中文的支持 (真正有效而简单的方法)
- CEGui对中文的支持
- Latex对中文的支持
- TeXmacs对中文的支持
- Trafodion 对中文的支持
- PBDOM对中文的支持
- git对中文的支持
- vim中对go的支持
- vim支持中文显示
- vim支持中文设置
- vim TOhtml 支持中文
- vim支持中文注释
- vim中文编码问题
- vim中文编码
- vim中文编码问题
- ARC forbids explicit message send of release 解决方案
- 使用文件和文件组备份可以恢复表数据吗?
- 并查集练习---poj 1182 食物链
- 铜道网站
- moutain lion 可用的虚拟机解决方法
- Vim对中文编码的支持
- hdu 2079 选课时间(题目已修改,注意读题) (母函数)
- 数据库
- struts2之3--Action类的包装
- NSFileManager处理目录的一些方法
- SQL Server 系统数据库
- SQLite3数据库中LIMIT和 OFFSET的理解
- STL源码剖析---红黑树原理
- 触发器deleted 表和 inserted 表详解