在Vim中,有四个与编码有关的选项,它们是:fileencodings、fileencoding、encoding和termencoding。在实际使用中,任何一个选项出现错误,都会导致出现乱码。因此,每一个Vim用户都应该明确这四个选项的含义。下面,我们详细介绍一下这四个选项的含义和作用。
(1)encoding
encoding是Vim内部使用的字符编码方式。当我们设置了encoding之后,Vim内部所有的buffer、寄存器、脚本中的字符串等,全都使用这个编码。Vim 在工作的时候,如果编码方式与它的内部编码不一致,它会先把编码转换成内部编码。如果工作用的编码中含有无法转换为内部编码的字符,在这些字符就会丢失。因此,在选择 Vim 的内部编码的时候,一定要使用一种表现能力足够强的编码,以免影响正常工作。
由于encoding选项涉及到Vim中所有字符的内部表示,因此只能在Vim启动的时候设置一次。在Vim工作过程中修改encoding会造成非常多的问题。用户手册上建议只在 .vimrc中改变它的值,事实上似乎也只有在 .vimrc中改变它的值才有意义。如果没有特别的理由,请始终将encoding设置为utf-8。为了避免在非UTF-8的系统如Windows下,菜单和系统提示出现乱码,可同时做这几项设置:
set encoding=utf-8
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
(2)termencoding
termencoding是Vim用于屏幕显示的编码,在显示的时候,Vim会把内部编码转换为屏幕编码,再用于输出。内部编码中含有无法转换为屏幕编码的字符时,该字符会变成问号,但不会影响对它的编辑操作。如果termencoding没有设置,则直接使用encoding不进行转换。
举个例子,当你在Windows下通过telnet登录Linux工作站时,由于Windows的telnet是GBK编码的,而Linux下使用UTF-8编码,你在telnet下的Vim中就会乱码。此时有两种消除乱码的方式:一是把Vim的encoding改为gbk,另一种 *** 是保持encoding为utf-8,把termencoding改为gbk,让Vim在显示的时候转码。显然,使用前一种 *** 时,如果遇到编辑的文件中含有GBK无法表示的字符时,这些字符就会丢失。但如果使用后一种 *** ,虽然由于终端所限,这些字符无法显示,但在编辑过程中这些字符是不会丢失的。
对于图形界面下的GVim,它的显示不依赖TERM,因此termencoding对于它没有意义。在GTK2下的GVim 中,termencoding永远是utf-8,并且不能修改。而Windows下的GVim则忽略termencoding的存在。
连年来我国整体的经济成长程度都获得了显著的提高和明明的晋升,不绝成长的市场情况使一众乡镇人士也发生了在内地创业开店的想法,个中就不乏想开一家麻辣烫店肆的创业者。那么就今朝形势而言在镇上开一家麻辣烫可以...
很多设计师的作品,真的别出心裁,灵感的爆棚和大量的图片,才是一个设计师提升的根本,现如今业主要求的不断增高,原创设计意识强劲,越来越多的设计师,都在国外的设计网站寻找灵感。 作为室内设计师,好...
所谓「凡尔赛文学」,一句话归纳综合就是通过先抑后扬、自问自答可能第三人称视角,不经意间秀出优越感的文案。严格说来,告白人才是「凡尔赛文学」的鼻祖。对付这种“先抑后扬”的表述形式,告白人早就玩到飞起。本...
怎么查老婆跟谁开了房(酒店同住人也会查到吗),恋人节那天,我媳妇和一个目生人开了一间房。我踢开了门,冲了进入。我对当前的环境感应最感恩。我媳妇和我是在事情中分解的。我的媳妇是一个和顺贤慧的女人,最适用...
嬴政的父亲是吕不韦吗(始皇帝的亲生父亲真的是吕不韦吗)吕不韦并不是始皇帝亲父的法律法规直接证据 为了更好地查证始皇帝的亲生父亲到底是谁,大家对与案子相关的关键嫌疑人吕不韦干了严实的核查。核查的...
罗贯中是哪朝人? 1、元代。罗贯中,字贯中,号湖海散人,山西并州太原府人,元末明初小说家。其主要作品有小说《隋唐两朝志传》《残唐五代史演义》《三遂平妖传》等。2、罗贯中是明代人,是元末明初的著名小说家...