一次 Vim 文档内容乱码故障处理

编程之家收集整理的这篇文章主要介绍了一次 Vim 文档内容乱码故障处理编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、问题

最近朋友出现一个这样的问题, 朋友在vim 某个文件的时候,发现里面的中文乱码了, 但是使用 tail 命令的时候是正常的。最后协助解决了下。

Vim 的时候

image-20210314142248142

Tail

二、问题原因

综上所述,我们其实就可以知道,应该是 vim 的问题了,应该是vim 打开文件使用的编码格式有问题。

我们查看我们当前用户的vim配置 ~/.viminfo

[djx@localhost ~]$ grep  'encoding'  ~/.viminfo
# Value of 'encoding' when this file was written
*encoding=latin1
[djx@localhost ~]$

我们发现我们的 默认encoding 是 latin1

Latin1是ISO-8859-1的别名 有些环境下写作Latin-1。ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。 不支持中文的,

这个是不对,应该使用我们的 utf-8

三、问题解决

3.1 更改 ~/.viminfo

我们第一想法是 直接更改 ~/.viminfo,将 *encoding 设置为 utf-8。 但是我们发现每次更改完文件后,这个直接失效了。 encoding 的值还是变回了 *encoding=latin1。 因为 ~/.viminfo 这个文件是会记录我们之前编辑的文件以及文件。在vim中操作的行为,vim会自动记录下来,保存在 ~/.viminfo 文件中。

这样为了方便下次处理,
如:vim打开文件时,光标会自动在上次离开的位置显示
原来搜索过的字符串,新打开文件自动高亮显示

~/.viminfo 文件是系统自动生成

3.2 更改 /etc/vimrc

我们在 /etc/vimrc 末尾文件加上 set encoding=utf-8

然后我们切换到我们的用户

  1. 执行下 vim /tmp/test.log 退出,这一次是为了让 ~/.viminfo 重新生成
  2. 然后我们再执行下 vim /tmp/test.log 就可以看到没有乱码了。

并且 ~/.viminfo*encoding=utf-8了。

[djx@localhost ~]$ grep  'encoding'  ~/.viminfo
# Value of 'encoding' when this file was written
*encoding=utf-8

如果我们按照上面的执行没有成功,我们可以尝试强制重新生成 .viminfo. 就是把 viminfo 给重命名或者删除,让系统重新生成

mv  ~/.viminfo ~/.viminfo.bak

四、问题延升

也就是对 vim 以及相关配置的一个熟悉和提升。 见另外一篇文章

总结

以上是编程之家为你收集整理的一次 Vim 文档内容乱码故障处理全部内容,希望文章能够帮你解决一次 Vim 文档内容乱码故障处理所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

相关文章

猜你在找的Linux相关文章

问题 最近在用容器跑 Tomcat 的时候,使用的官方的镜像 tomcat:8.5.43-jdk8-openjdk, 然后启动之后报了下面的错 java.util.MissingResourceExc
一、问题详情 linux一切皆文件 2021年4月2号,晚上10.45分左右,线上业务异常,后排查 线上服务器CPU 异常高,机器是 16核 64G的。但是实际负载已经达到了 140左右。 top 命
一、 /etc/security/limits.conf 详解 /etc/security/limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authenti
一、问题 最近朋友出现一个这样的问题, 朋友在vim 某个文件的时候,发现里面的中文乱码了, 但是使用 tail 命令的时候是正常的。最后协助解决了下。 Vim 的时候 Tail 二、问题原因 综上所
禁止软件升级 sudo echo 软件包名 hold | sudo dpkg --set-selections 取消软件禁止升级的限制 sudo echo 软件包名 install | sudo dp
译 原文作者:Bobbin Zachariah 原文链接:https://linoxide.com/linux-command/essential-linux-basic-commands/ @ 在本
 规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个