一次 Vim 文档内容乱码故障处理
一、问题
最近朋友出现一个这样的问题, 朋友在vim 某个文件的时候,发现里面的中文乱码了, 但是使用 tail 命令的时候是正常的。最后协助解决了下。
Vim 的时候
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
。
然后我们切换到我们的用户,
- 执行下
vim /tmp/test.log
退出,这一次是为了让~/.viminfo
重新生成, - 然后我们再执行下
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 以及相关配置的一个熟悉和提升。 见另外一篇文章。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2020-03-14 Zabbix 监控 tcp 连接状态的第二版(python+zabbix_sender)
2020-03-14 在Linux上查询物理机信息-不用去拆机器了
2020-03-14 SSH 登陆 limits 配置不生效解决办法