ToB企服应用市场:ToB评测及商务社交产业平台

标题: 实现一个终端文本编辑器来学习golang语言:第三章文本检察器part1 [打印本页]

作者: 麻花痒    时间: 2024-8-4 22:56
标题: 实现一个终端文本编辑器来学习golang语言:第三章文本检察器part1

本章我们来完成文本编辑器的文件打开和检察功能,最后成品如上图。我们将分4步,逐渐完成本章所需功能。内容比较多,会分为两个部门,第一部门重要关注于“View视图”和“buffer及文本读取”。
如上图终极结果所示,我们希望在终端的最下方增加一个状态栏,可以或许展示当前被打开的文件和当前的光标位置。
同时我们打算对整个终端视图做一些划分和重构。
首先先介绍一下编辑器各个组件的定位:
View结构

首先我们来重构项目部门代码,来把一些现有功能放入view结构体以及它的方法中,因此我们的editor结构体应该持有一个View
  1. type editor struct {
  2.         view *view.View
  3.         needQuit bool
  4. }
复制代码
而对于View来说,因为光标只能在View内移动,所以指示光标位置的TextLocX、TextLocY应当被移动到View结构的成员中。
  1. type View struct {
  2.         TextLocX int
  3.         TextLocY int
  4. }
复制代码
别的和View相干的函数页应被重构为View的方法,包括
作业1

按“View结构”的要求,重构代码。
Code Review 我的实现
简单的Buffer

缓冲区是一种常见的结构,它生存了文本编辑器修改和显示文本文件所需的一切。视图与缓冲区交互以在屏幕上出现文本。在许多文本编辑器中,您可以轻松地从一个缓冲区切换到下一个缓冲区,从而允许您并行打开多个文件。
缓冲区的实现细节因文本编辑器而异。例如,Nano 使用一种简单直接的缓冲区结构:生存文件时,缓冲区的内容(不包括语法高亮显示的颜色等数据)会生存到磁盘。而Vim 具有复杂的内部结构,即使在处置惩罚大型文件时也能高效地处置惩罚操作,并且包括一个单独的屏幕缓冲区,用于表示当前屏幕上可见的内容。这些计划选择反映了每个编辑器的愿景:Nano 旨在成为一个小型、轻量级的编辑器,适用于快速更新设置文件。而 Vim 则被计划为一个功能齐全、功能丰富的文本编辑器,非常适合处置惩罚冗长的文件。
作业2 简单的buffer

Code Review 我的实现

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4