oeasy教您玩转vim - 79 - # 编码格式encoding
- `help encoding-name`

- 看起来就是unicode编码
- 那其实我可以把当前文档保存为
- utf-8 `:set fileencoding=utf-8`
- gb2312 `:set fileencoding=gb2312`
- 当然反过来
- 我如果打开一个文件
- 可以通过
- `:set encoding=utf-8`或者
- `:set encoding=gb2312`
- 来设置编码确保文件正常观看
## 总结
- 这次我们了解了编码格式
- 屏幕显示的encoding
- 文件保存的fileencoding
- 不能搞乱了
- 一般用什么编的就用什么解
- 解铃还须系铃人
- 打开不正确的话,就要切到正确的上面
- 保存成任何自己想要的编码方式
- vim还有什么能帮助我们快速操作的方法么?
- 下次再说!
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)
文件格式 fileformat
回忆
上次我们了解了文件格式
- unix
- dos
- mac
不同文件格式对应的换行符不同
- 可以修改当前文件的文件格式
- 也可以用二进制来观察
- 不同文件格式下
- 具体换行符的样子
为什么'6f'就对应字母
o?- 因为这是ascii基本的编码设定
- 可中文字符又是如何编码的呢?
插入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
使用十六进制
- 输入ctrl+v x41
- 能否用这个方式插入中文么?
- 先查一下
插入unicode字符
输入ctrl+v u4e00
- 可以看到插入了中文字符
- 具体二进制是如何存储的呢?
:.!xxd

- 为什么会是这样呢?
编码模式
那这个东西怎么具体存储和操作呢?
- 这个unicode编码是0x4e00
- 存储的时候需要避免和ascii中的前127个字符混淆
- 需要用utf-8的方式存储
- 状态栏上也可以看出此文件的编码格式

- 默认是utf-8
utf-8 编码格式

- 一(4E00) 属于第三行的范围

所以
e4b880对应着一0a对应着<LF>- 也就是linefeed

- 完美对应上了
- 除了utf-8之外还有别的编码格式么?
查看当前语言和编码
:language可以查看当前编码格式

修改编码
:set encoding=unicode- 设置之后再观察变化

- 这个ucs-2就是utf-16
- ucs-4就是utf-32
- 上面的编码变成了4e00
- 还有什么其他编码么?
其他编码
:set encoding=latin1- 修改之后,状态栏的中文不认识了
- 屏幕的字符也变了模样
- 其实他这是用
latin1来解释e4b880

- 这个是拉丁字符的编码
- 我们再试试支持中文的
gb2312
:set encoding=gb2312- 换成中文gb2312
- 文件存储形式没变
- 解释方式变了
- 我们也无法理解

:set encoding=utf-8- 改回来了
- 我们又可以看到
一

:set encoding=gb2312- 又来
- 硬要说他是
gb2312的编码
- 然后就保存
- 以上都发生在内存里面
- 保存到硬盘里面
- 如何控制他的编码格式呢?
文件编码格式

fenc其实就是fileencodingfileencoding和coding有什么不同呢?
encoding- 是在屏幕显示字符时的所用编码格式
- 是读取内容并放入内存缓冲buffer中的编码
fileencoding是保存文件时- 在硬盘上保存二进制文件的编码格式
- 是硬盘上的编码
- 我们用
utf-8写下了一 - 内存中对应
e4b880
:set encoding=gb2312- 这是在用gb2312编码格式解码utf-8编码的二进制序列
- 把
e4b880理解为涓~并显示在屏幕上
:set fileencoding=gb2312- 根据gb2312
- 把
涓~在硬盘上写成e4b880
vi oeasy.txt- 根据utf-8
- 把
e4b880理解为一并显示在屏幕上
- 如果我就想写一个gb2312的
一到硬盘 - 怎么办呢?
使用gb2312
:set encoding=gb2312- 之后在插入模式下输入一
:set fileencoding=gb2312- 注意状态栏的变化
- 这是要在内存中和硬盘上都使用gb2312编码格式

:%!xxd- 这次内存中的
d2bb在gb2312格式下被理解为一
- 这次内存中的
:%!xxd -r- 恢复回来
:w! o2z.txt- 这次把用
gb2312编码一,也就是d2bb - 写到了硬盘里
- 这次把用
打开文件
vi o2z.txt只能看到一个
h- 好多不可见
- 这是在用utf-8编码格式解释gb2312编码后的内容
- 因为是用
utf-8解码gb2312编码的文件 :%!xxd- 可以看到从硬盘读到缓存的内容为
d2bb
- 可以看到从硬盘读到缓存的内容为
%!xxd -r- 恢复回来
:set encoding=gb2312- 这次可以看到用
gb2312解码d2bb为一
- 这次可以看到用
- 那如果我们都用utf-8来编码呢?
utf-8编码
:set encoding=utf-8:set fileencoding=utf-8- 这样都是utf-8编码的内容
- 其实还可以设置在内存中
unicode - 这样更省内存空间
- 但如果我我想要把文件编码设置为ascii
- 并保存会如何呢?
E513

- 出现了错误E513
- 因为ascii每个字节首位必须是0
- 所以这个汉字
一无法保存 - 所以这个时候如果把filecoding置成空会如何呢?
修改
:set fileencoding=:set fileencoding?:set encoding?- 这个时候
encoding是ucs-2 - 这是什么意思?

编码含义
help encoding-name

- 看起来就是unicode编码
那其实我可以把当前文档保存为
- utf-8
:set fileencoding=utf-8 - gb2312
:set fileencoding=gb2312
- utf-8
- 当然反过来
- 我如果打开一个文件
可以通过
:set encoding=utf-8或者:set encoding=gb2312- 来设置编码确保文件正常观看
总结
这次我们了解了编码格式
- 屏幕显示的encoding
- 文件保存的fileencoding
- 不能搞乱了
- 一般用什么编的就用什么解
- 解铃还须系铃人
- 打开不正确的话,就要切到正确的上面
- 保存成任何自己想要的编码方式
- vim还有什么能帮助我们快速操作的方法么?
- 下次再说!
[Github地址] (GitHub - overmind1980/oeasyvim: 这是oeasy制作的的一套关于vim的教程 可以在 https://www.lanqiao.cn/teacher/courses/2840 做实验 邀请码FJWYIMGB 本教程从0基础开始,到精通vim配置,和高级命令。希望能让vim是你的开发更高效。)
[Gitee地址] (overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (oeasy 教您零基础玩转编辑神器 vim_Linux - 蓝桥云课)
oeasy教您玩转vim - 79 - # 编码格式encoding的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- swagger 的配置
1,开启swagger : c.IncludeXmlComments(GetXmlCommentsPath()); protected static string GetXmlCommentsPath ...
- Java应用的优雅停机
一. 优雅停机的概念 优雅停机一直是一个非常严谨的话题,但由于其仅仅存在于重启.下线这样的部署阶段,导致很多人忽视了它的重要性,但没有它,你永远不能得到一个完整的应用生命周期,永远会对系统的健壮性持怀 ...
- zabbix笔记_007 zabbix 分布式架构
1. zabbix 分布式架构[服务器数量较大的场景下使用] 现有架构: agent --> zabbix server proxy架构: agent --> zabbix proxy - ...
- 微信小程序设置swiper圆角在ios上失效
今天在给轮播图添加圆角的时候,发现在安卓机上是有圆角的,但是在苹果手机上圆角却失效了,后来翻阅了文档发现这是个官方的bug 解决方法1 border-radius: 20rpx; /*再设置个tran ...
- k8s——pod的yaml文件
理解什么是pod pod基于deployment创建,删除deployment,pod也会被删除 基础pod的yaml文件的资源清单 点击查看列表 | 参数名 | 类型 | 字段说明 | | ---- ...
- 操作标签的属性和属性值 table表格
// 操作标签的属性和属性值 // 特殊的属性 // 可以直接通过 点语法或者[]语法来操作的属性 // id 和 class ...
- .net6 asp.net core mvc 中使用NLog ILogger
1.用VS2022新建一个.NET6 MVC项目. 2.使用nuget引用NLog.Extensions.Logging. 3.项目中新建一个NLog.config配置文件,右键属性设置为" ...
- 使用 OpenTelemetry 构建可观测性 06 - 生态系统
过去的五篇文章讨论了如何使用 OpenTelemetry 来构建可观测性的技术细节.我认为在本博文系列的结尾介绍有关 OTel 生态系统的信息,为读者提供更全面的了解非常重要.OpenTelemetr ...
- 5分钟带你了解RabbitMQ的(普通/镜像)集群
前言 让我们深入探讨RabbitMQ的集群配置,了解各种集群模式的利弊.本次讨论的重点是帮助您快速理解RabbitMQ集群的运作方式,以及选择最适合您需求的模式.好的,话不多说.在RabbitMQ中, ...
- Big Exponential Addition
Big Exponential Addition 给定一非负整数n计算2^n的值,一般而言把 2 乘上 n 次,就能得到答案.然而,当n特别大时,2^n要一次次地乘2可能稍嫌太慢,面对此一巨大问题利用 ...