回忆
插入ascii字符
- 我们新建一个
oeasy.txt
-
i进入插入模式
- 输入ctrl+v 65
- 输入ctrl+v 66
- 输入ctrl+v 67
- 输入ctrl+v 68
-
esc 退出
- 屏幕上可以见到插入了
ABCD
四个字符
- 这就是使用ascii具体编码来插入字符
- 那我能用其他的进制
- 比如八进制和十六进制来插入ascii字符么?
:h i_ctrl-v
用其他进制插入ascii字符
- 使用八进制
- 输入ctrl+v o117
- 输入ctrl+v o101
- 输入ctrl+v o105
- 输入ctrl+v o123
- 输入ctrl+v o131
- 使用十六进制
- 能否用这个方式插入中文么?
- 先查一下
插入unicode字符
- 输入ctrl+v u4e00
- 可以看到插入了中文字符
- 具体二进制是如何存储的呢?
:.!xxd
utf-8 编码格式
- 那这个东西怎么具体存储和操作呢?
- 这个unicode编码是0x4e00
- 存储的时候需要避免和ascii中的前127个字符混淆
- 需要用utf-8的方式存储
- 状态栏上也可以看出此文件的编码格式
查看当前语言和编码
修改编码
-
:set encoding=latin1
- 修改之后,状态栏的中文不认识了
- 屏幕的字符也变了模样
- 其实他是用
latin1
来解释e4b880
-
:set encoding=gb2312
- 换成中文gb2312
- 文件存储形式没变
- 解释方式变了
- 我们也无法理解
-
:set encoding=utf-8
-
:set encoding=gb2312
文件编码格式
-
encoding
- 是读取内容并放入内存缓冲buffer时
- 在屏幕显示字符时的所用编码格式
-
fileencoding
是保存文件时
- 在硬盘上保存二进制文件的编码格式
- 我们用
utf-8
写下了一
- 内存中对应
e4b880
-
:set encoding=gb2312
- 这是在用gb2312编码格式解码utf-8格式的编码
- 把
e4b880
理解为涓~
并显示在屏幕上
-
:set fileencoding=gb2312
-
vi oeasy.txt
- 根据utf-8
- 把
e4b880
理解为一
并显示在屏幕上
- 如果我就想写一个gb2312的
一
到硬盘
- 怎么办呢?
使用gb2312
-
:set encoding=gb2312
- 插入模式下输入一
-
:set fileencoding=gb2312
- 注意状态栏的变化
-
:%!xxd
- 这次内存中的
d2bb
在gb2312
格式下被理解为一
-
:%!xxd -r
-
:w! o2z.txt
- 这次把用
gb2312
编码一
,也就是d2bb
- 写到了硬盘里
打开文件
vi o2z.txt
- 只能看到一个
h
- 好多不可见
- 这是在用utf-8编码格式解释gb2312编码的内容
- 因为是用
utf-8
解码gb2312
编码的文件
-
:%!xxd
-
%!xxd -r
-
:set encoding=gb2312
总结
- 这次我们了解了编码格式
- 屏幕显示的encoding
- 文件保存的fileencoding
- 不能搞乱了
- 用什么编的就用什么解
- 解铃还须系铃人
- vim还有什么能帮助我们快速操作的方法么?🤔
- 下次再说!✋
教程来源于Github,感谢overmind1980大佬的无私奉献,致敬!
Spring Boot与Kubernetes云原生微服务实践 -〔杨波〕
TypeScript开发实战 -〔梁宵〕
编译原理之美 -〔宫文学〕
To B市场品牌实战课 -〔曹林〕
深度学习推荐系统实战 -〔王喆〕
技术领导力实战笔记 2022 -〔TGO 鲲鹏会〕
现代C++20实战高手课 -〔卢誉声〕
AI大模型之美 -〔徐文浩〕
LangChain 实战课 -〔黄佳〕