中易网

请问如何用 VIM 打开不同编码的文件

答案:1  悬赏:0  
解决时间 2021-01-15 03:47
请问如何用 VIM 打开不同编码的文件
最佳答案
其实在VIM7.0 中已经考虑到这个问题了。只要在 ~/.vimrc 中进行如下设置就可以打开任何文件,而不会再有乱码问题。Debian4.0 还可以放在/etc/vim/vimrc.local 中,避免自己目录中的点文件太多。
set encoding=utf8
set fileencodings=utf8,gbk
下面对以上设置进行简单地解释,更详细的请用 :help encoding 自己看。
第一句设置VIM 中使用的编码方式。它将影响保存在缓存、寄存器、表达式以及viminfo 文件中文本。总之,这会影响所有VIM 能处理的文本。需要注意的是,如果在编辑时临时改变这个参数,对VIM 中当前存在的文本没什么影响,但可能会使一些非ASC 码出现问题。通常,保持起始时的默认值,或者在启动VIM 时就设定好它。如本例中的做法。对于GTK+2 的程序,强烈建议使用utf-8 编码。设置时默认utf8 是utf-8 的别名。
第二句设置文件编码。这个fileencodings 不同于上面的encoding。它只在读写文件时才会发挥作用。看了上面的语句,你可能已经猜到,它其实是一个可选的字符编码列表。当读写文件时,VIM 会优先用utf8 进行尝试,如果不行的话就转到第二条,在这里就是gbk。如果以上两条都不行,也就是说这个文件中的编码比较混乱,即有utf8 和gbk 都无法处理的字符,VIM 就会自动把fileencodings 这条语句清空,即set fileencodings= ,同时它会强制使用跟encoding 一样的编码读写文件。不过,在绝大多数情况下,不可能有这样的文件;-) 呵呵。
其实VIM 中还有一个类似的参数叫fileencoding,它才是真正在读写文件时起作用的参数,但只需设定了fileencodings 就可以不用管它了。注意有无“s”!有关这两者的密切关系,请自行去看 help。
还有最后一点要说明的是:当以上转换发生在utf8或其它utf变体之间时,没任何问题。但当encoding 不是utf8 时,可能会导致一点非ACS 码的问题。如果想克服这个问题的话,请使用++bad=keep,如在保存文件时用 :w ++bad=keep,但这么做有可能使问题更严重。
如果你不想按以上所说在系统中设定这两个参数,只想能正常读写不同编码的文件,请不
要担心。VIM 还有一个很好的临时性的方法。像这样 :edit ++enc=big5 filename,就可以
big5 编码方式打开一个文件了。保存时用 :w ++enc=big5 filename。big5 可以换成你机器上有的locale 中的任意一种。前提是你的机器能正常显示。祝用得开心!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有vivo手机的供货商吗
为什么说五胡乱华这一场悲剧 罪魁祸首就是司
speic电路中的电感可以共用一个电感吗
小叶降真香现在什么价位?就是斜叶黄檀吧?一
红蜘蛛网吧地址在什么地方,想过去办事
丰田1.2t发动机以后会用在哪些车上
为什么有老桩的更多肉值钱?
龟山社区居委会地址好找么,我有些事要过去
橘子放的时间越长越甜为什么
小辰计算28÷4x[81一()]时,没有注意中括号,先
弘法寺本涣大师生平介绍
2014女孩名字带汐字
万和燃气热水器10et36型号点不着火
电力生产中怎么有效避免习惯性误操作
充电装置中防倒流的是什么二极管
推荐资讯
重固镇街道办地址好找么,我有些事要过去
新手想玩下刺客信条,应该先玩哪一部,我玩游
形容家教有问题的成语
什么Uplay,注册Uplay账号该怎么操作
困扰很多大学生的问题
四年级作文神谭大峡谷的导游词
ez皮肤光执事、矿工、冰川 三个你推荐买哪一
人鼻头一热,请问还有比《极限挑战3》更真实
sm主奴协议
中班科学比比高反思
于正要拍的大陆版神雕侠侣的小龙女到底是谁?
光纤孔径15FA是什么意思?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?