vim 编码格式设置不正确_Vim的编码详解和中文环境设置

Vim

的编码详解和中文环境设置

很惭愧,作为

vim

的忠实用户,自从

2

年多前从

help

里知道了

:edit

++enc=xxx

这个命令之后,我就没有去了解过

vim

的编码设定了。这些年来,我遇到编码出

错,总是

:edit

++enc=xxx

。今天

:help

了一下

encoding

等,终于搞清楚了相关的各个变量的作用和关系。

简单的说,有三个设置。

(

我下面基本以中文环境来作为说明

)

1)

.vimrc

或者

_vimrc

里加入

set

fileencodings=utf-8,gb2312,gbk,gb18030,big5

这句就基本

OK

了。

vim

会依次使用这些

编码对文件进行编码的猜测。

2)

如果还是不行,那么在打开文件之后,用

:edit

++enc=gbk

这个命令强制使用某个编码。

3)

如果依然不行,请检查你的

$LANG

环境变量。

下面是详细的说明。

vim

编码主要涉及三个变量。

encoding

vim

的内部编码,包括内存数据的编码,

vim

配置文件的编码。

encoding

取自变量

$LANG

如果

$LANG

为空,则取

latin1

。这个编码应该和你的终端编码保持一致的。

fileencoding

文件的编码。

vim

在加载文件的时候,会把这个编码转换成

encoding

参数的编码。同样的,

保存文件的时候,内存的编码会由

encoding

转变为

fileencoding

需要注意的是,在

vimrc

里设置这个参数,不会起作用。因为打开一个文件的时候,

fileencodings

或者

encoding

会覆盖

fileencoding

。关于这个,可以看下面提到的打开文件

流程。

fileencodings=utf-8,gbk,gb2312

vim

在加载一个文件的时候,会依次尝试使用

fileencodings

里的编码作为

fileencoding

。如

果全部失败,那么

vim

会使用

encoding

作为

fileencoding

另外,如果

vim

使用了错误的编码,可以使用

edit

++enc=gbk

这个命令。意思是,重新读取文件,并强制使用

gbk

作为

fileencoding

。这时候

会忽略

filencodings

以下是一些

vim

操作的内部流程

打开文件

首先从文件读入数据到内存,然后从

fileencodings

里依次使用各个编码来尝试转换为

encoding

。如果有一个成功,则中止尝试。如果找不到,则取

encoding

作为

fileencoding

也就是说,这里有一个从

fileencoding

转换为

encoding

的过程。

保存文件

把内存的数据,从

encoding

,转换为

fileencoding

,然后写入文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值