阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

vi/vim 编码设置

36次阅读
没有评论

共计 1604 个字符,预计需要花费 5 分钟才能阅读完成。

导读 vim 编码涉及四个概念,分别是 enc,fenc,fencs,tenc, 一般乱码多是因这些参数设置不正确引起的,要想彻底摆脱 vim 的乱码问题,还是把这四个概念理清楚了,下面详细介绍之。
VIM 的文本编码选项

encoding(简写为 enc)

enc 的全称为 encoding,这是 Vim 内部使用的编码,如 buffer,寄存器中的字符串。在 Vim 打开文本后,如果它的编码方式与它的内部编码不一致,Vim 会先把编码转换成内部编码,如果它用的编码中含有没法转换为内部编码的字符,那么这些字符就会丢失掉。默认值是系统的 locale 来决定的,比如在 windows 下一般就是 gbk 或 gb2312 的,而在 linux 下就是 utf-8。可以用命令:set enc 查看当前 vim 的 enc 是什么值,笔者的 windows 显示的是 cp936 这里的 cp936 其实相当于 gb2312,指系统的第 936 号编码格式。

fileencoding(简写为 fenc)

fenc 为当前缓冲区(当前 Vim 打开这个文件)文件自身的编码,从磁盘读文件时,Vim 会对文件编码检查,如果文件的编码与 Vim 内部编码(enc)不同,Vim 就会对文本做编码转换,将 fenc 设置为文件的编码。Vim 写文件到磁盘时,如果 enc 与 fenc 不一样,Vim 就做编码转换,转换成编码 fenc 保存文件。在 windows 下你可以借由 notepad++ 等编辑器检查文件是什么编码的。由于 fenc 是在打开文件时由 Vim 自动检测的,所以如果文章中有乱码也没法通过重新设置 fenc 来纠正,设置 fenc 只能改变文本的编码格式。

fileencodings(简写为 fencs)

这是一个字符编码的列表,编码的自动识别就是通过设置 fencs 实现的。当打开一个文件时,Vim 会按照 fencs 中编码的顺序进行解码操作,如果匹配成功就用该编码来进行解码,并把这种编码设为 fenc 的值。这里的匹配成功指的是 Vim 能正确解码,不会出错,但是不保证没有乱码,所以 fencs 编码列表的顺序设置很关键,由于 lanin1 是 iso8859-1,属于国际化的标准编码,他能表示任何字符,也就用于也不会出错,但是我们看到的可以是“乱码”。所以一般 fencs 设置的顺序是这样子的:lan1 放到最后面

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

终端使用文本编码,或者说是 Vim 用于屏幕显示时的编码,显示的时候 Vim 会把内部编码转换为屏幕编码再输出,也就是说我们从屏幕上看到的字符都是 tenc 编码的字符,如果为空,默认就是 enc。windows 平台 Gvim 会忽略掉 tenc。一般就是从一个终端远程登陆到 linux 系统时候 tenc 会起作用。

编码配置(乱码问题的解决)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""vim7.1 在 windows 下的编码设置""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
" 解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
" 解决 consle 输出乱码
language messages zh_CN.utf-8

菜单乱码只需要重新 source 一遍就好了。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1604字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中