Vim 实用技巧必知必会
吴咏炜
前 Intel 资深软件架构师
21753 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
Vim 实用技巧必知必会
15
15
1.0x
00:00/00:00
登录|注册

11|文本的细节:关于字符、编码、行你所需要知道的一切

UTF-8
其他编码方式
ASCII
不包含乱码
可直接输出到终端
转换为人眼可识别的文字
存放的内容
Convert to HEX和Convert Back
Vim的binary选项
断行
行尾格式
行结束符
字符宽度的设定
模糊宽度字符
Unicode中的字形
编码方式
文件内容是一堆比特
文本文件的判定
文本文件
课后练习
内容小结
编辑二进制文件
行
字符和字形
字符和编码
什么是文本
Vim 的文本细节

该思维导图由 AI 生成,仅供参考

你好,我是吴咏炜。
从今天开始,我们进入提高篇和拓展篇的学习。
在提高篇,我会带你对 Vim 的高级用法和技巧进行专项突破,让你可以对 Vim 做深度定制,应对复杂的工作也不在话下。
在拓展篇,我会介绍一些针对性较强的内容,适合特定场景下的 Vim 使用。为了平衡一般性和特殊性,让你拥有更舒适的学习体验,拓展篇将会与提高篇交叉发布。如果一时用不到相关的知识,拓展的内容可以暂时延后学习。但一旦你需要这些知识时,你会发现,哦,原来如此,Vim 是可以这么使用的!
Vim 是一个文本编辑器,很多人甚至把它称为“编辑器之神”。在基础篇中,你已经了解了很多用 Vim 编辑文本的常用技巧。可是你有没有想过,到底什么才算是文本?在提高篇的第一讲,我们就先来细细分析一下,关于文本你需要知道的一切知识。这会让你更好地理解编辑时出现的一些奇怪问题(如“乱码”),并予以恰当解决。

什么是文本

从二元论的角度看,计算机文件可以分为文本文件(text file)和二进制文件(binary file),但这个分法并没有对文本做出清晰的界定。从实用的角度,我们大致可以这么区分:
文本文件里存放的是用行结束符(EOL,即 End of Line)隔开的文本行,二进制文件里则没有这样的明确分隔符
文本文件可以通过简单、直接的算法转换为人眼能够识别的文字,而二进制文件里含有不能简单转化为文字的信息
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入浅出地介绍了Vim编辑器中关于文本的重要概念,包括字符、编码和行。文章首先强调了文本文件与二进制文件的区别,然后详细介绍了字符和编码的概念,特别强调了UTF-8作为Unicode里最重要的编码方式。此外,还涉及了文件编码的自动检测和转换,以及字符和字形的概念。对行结束符的不同风格和Vim编辑器中的断行功能也进行了详细介绍。另外,文章还介绍了Vim编辑器在需要时可以用来查看和编辑二进制文件的功能。总的来说,本文为读者提供了全面的知识储备,有助于更好地理解和应用Vim编辑器。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Vim 实用技巧必知必会》
,新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 瀚海星尘
    CR,LF,\r,\n一直没搞明白,这次算懂了,原来是打字机发展出来的。

    作者回复: 对。好多名词,脱开历史起源,就不好理解了。比如 upper-case 和 lower-case,原因是以前的活字排版系统里,大写字母放上面的盒子里,小写字母放下面的盒子里而已。 增加点无用的知识,也算是一种乐趣吧。 :-)

    2020-09-07
    6
  • 人在江湖龙在江湖
    字符集和字符编码不是一个概念,字符集定义了文字和二进制的对应关系,为字符分配了唯一的编号,而字符编码规定了如何将文字的编号存储到计算机中. ascii,big5,GBK 等既有字符集功能,又有字符编码功能。unicode是字符集,utf8是字符编码。而我们看到的gbk-utf8这个我觉得是用了gbk的字符集功能,当存储的时候不用gbk自己的字符编码功能,而用utf8的字符编码功能

    作者回复: “字符集和字符编码不是一个概念”:对。所以我讲到GB2312时特意强调了“编码GB2312”并不是个准确的说法。 “我们看到的gbk-utf8这个”:对不起,我真没见到过这种用法。如果你知道哪儿有这样的用法,还需要你来详细说明一下。 如果限定字符集只能是GBK范围内,那使用UTF-8好处非常有限,至少多了编码结果变长这个坏处。

    2021-01-21
    2
  • 鸿哥
    一直不明白setloca和set的区别,老师能说一下么

    作者回复: setlocal 设置的是当前缓冲区的选项。你可以全局 tabstop 是8,但当前缓冲区的 tabstop 是 4。只要这个想象支持本地设置即可。这讲的基本都支持。

    2020-08-18
    1
  • 我来也
    学习了,长知识了。😄

    作者回复: 😇 似乎你总是最早完成学习的人啊!

    2020-08-17
    2
    1
  • dog_brother
    UTF-8,最多可以到6个字节吧?

    作者回复: 并没有。最大编码点是 U+10FFFF,而不是 U+7FFFFFFF。

    2022-05-20
  • pyhhou
    au FileType changelog setlocal textwidth=76 这里是 changelog 类型的 file,vim 才能修改 textwidth? 另外,思考题最后一问,感觉像是 vim 内部存有一个文件后缀名映射到具体编码的 mapping,然后打开文件会根据文件的后缀名和映射关系来确定所使用的文本编码方式?

    作者回复: 是changelog类型,上面的脚本才会去设置为文本宽度为76,这个类型的一个标准宽度吧。 “另外”部分,请复习第 8 讲。

    2020-08-20
  • 奕
    由于 GB2312 中本身也含有 ASCII 中包含的字符,在使用中逐渐就形成了“半角”和“全角”的区别 ------------ 这个有什么前后的因果关系吗?
    2022-07-24
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部