本章我们来完成文本编辑器的文件打开和查看功能,最后成品如上图。我们将分4步,逐渐完成本章所需功能。内容比较多,会分为两个部分,第一部分主要关注于“View视图”和“buffer及文本读取”。 如上图最终效果所示,我们希望在终端的最下方增加一个状态栏,能够展示当前被打开的文件和当前的光标位置。 同时我们打算对整个终端视图做一些划分和重构。 首先先介绍一下编辑器各个组件的定位: 编辑器editor:此组件主要在不同的用户界面组件(当前仅View)之间进行协调。 视图View:此组件接收来自编辑器的每个与文本相关的事件,例如字符的按键输入、换行等。视图使用此信息来进行渲染,并将文本修改事件转化并传...

  O3N9cbfLDxTP   2024年08月07日   57   0   0 Go

欢迎!这个系列的博文会带你使用golang语言来编写一个你自己的文本编辑器。 首先想说说写这个系列文章的动机。 其实作为校招生加入某头部互联网大厂一转眼已经快4年了。可以说该大厂算是比较早的用golang语言作为主要后端开发技术栈的公司了,绝大部分后端项目的语言选型都是golang。最近一年会发现许多核心的项目都在尝试使用rust语言来重写。归因无非是经过长期的迭代、优化,golang的性能已经被充分榨干了,在降本增效的大环境下,需要一些突破性的技术在硬件资源不变的情况下进一步提高服务的性能(或在当前服务性能保持不变的情况下尽可能减少硬件资源的消耗),所以rust自然进入了大家的视野。公司内大...

  O3N9cbfLDxTP   2024年08月07日   72   0   0 Go

从第二章开始,在每个小节的最后都会有一些代码实操作业,你可以选择自己完成(比较推荐),再对照我的实现方式,当然也可以直接看我的代码实现。不过,之后的各个功能实现,我都会基于我先前的代码实现版本,在它的基础上进行扩展。 首先,我们先来解决第一章遗留的第一个问题:输入数据会被stdin缓存,直到遇到换行符(也就是按下Enter键)才被发送。 进入Raw模式(RawMode) "Rawmode"是一个终端设置,该设置允许程序直接处理终端的输入数据。在"rawmode"中,输入的字符不会被终端缓冲,而会立即发送到程序。这意味着程序可以立即响应用户的每一个按键,而不需要等待用户按下Enter键。 此外...

  O3N9cbfLDxTP   2024年08月07日   41   0   0 Go

欢迎!这个系列的博文会带你使用golang语言来编写一个你自己的文本编辑器。更多介绍见https://www.cnblogs.com/Ama2ingYJ/p/18340634 这里我把我们的文本编辑器项目命名为zedterm。 首先第一步自然是初始化golang工程 gomodinitzedterm 作为文本编辑器,其中重要的一个工作便是读取用户的键盘输入,并展示出来。现在我们来简单写一个程序。这个程序会持续读取用户输入的字符,直到用户输入'q': packagemain import( "bufio" "fmt" "os" ) funcmain(){ reader:=bufio...

  O3N9cbfLDxTP   2024年08月07日   70   0   0 Go
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~