vim文件出现中文乱码问题

文章详细介绍了在Vim中处理编码问题的关键变量,包括encoding、fileencoding和termencoding,以及它们与系统locale、文件编码和终端编码的关系。当遇到中文文档乱码时,需检查这些设置是否匹配。通过`locale`命令确认系统语言环境为UTF-8,并在vimrc中设置fileencodings、termencoding和encoding为UTF-8以避免乱码问题。
摘要由CSDN通过智能技术生成

vim编码方面的基础知识:

存在3个变量:

encoding—-该选项使用于缓冲的文本(你正在编辑的文件),寄存器,Vim 脚本文件等等。你可以把 ‘encoding’ 选项当作是对 Vim 内部运行机制的设定。

fileencoding—-该选项是vim写入文件时采用的编码类型。

termencoding—-该选项代表输出到客户终端(Term)采用的编码类型。

此3个变量的默认值:

encoding—与系统当前locale相同,所以编辑文件的时候要考虑当前locale,否则要设置的东西就比较多了。

fileencoding—vim打开文件时自动辨认其编码,fileencoding就为辨认的值。如果fileencoding为空则保存文件时采用encoding的编码,如果没有修改encoding,那值就是系统当前locale了。

termencoding—默认空值,也就是输出到终端时不进行编码转换。

由此可见,编辑不同编码文件需要注意的地方不仅仅是这3个变量,还有系统当前locale和文件本身编码以及自动编码识别、 客户 运行vim的终端所使用的编码类型3个关键点,这3个关键点影响着3个变量的设定。

如果有人问:为什么我用vim打开中文文档的时候出现乱码?

答案是不确定的,原因上面已经讲了,不搞清楚这3个关键点和这3个变量的设定值,出现乱码是正常的,若不出现乱码那反倒是凑巧的。

此处转载至:VIM中文乱码原理详解及终极解决方案[经典]-蒲公英云

第一、查看系统当前的语言环境,确实采用的是utf-8模式进行编码的

输入locale命令

[root@csyyfwq ~]# 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
LANG=en_us.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=
由此可以确认系统采用的是utf-8模式进行编码的

第二、设置vim的配置,将vim写入、输出文件时采用的编码类型设置为utf-8

[root@csyyfwq ~]# vim .vimrc

加入以下代码:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936

set termencoding=utf-8

set encoding=utf-8

[root@csyyfwq ~]# source .vimrc

大功告成!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值