论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
实现一个终端文本编辑器来学习golang语言:第三章文本检 ...
实现一个终端文本编辑器来学习golang语言:第三章文本检察器part1 ...
麻花痒
金牌会员
|
2024-8-4 22:56:14
|
显示全部楼层
|
阅读模式
楼主
主题
914
|
帖子
914
|
积分
2742
本章我们来完成文本编辑器的文件打开和检察功能,最后成品如上图。我们将分4步,逐渐完成本章所需功能。内容比较多,会分为两个部门,第一部门重要关注于“View视图”和“buffer及文本读取”。
如上图终极结果所示,我们希望在终端的最下方增加一个状态栏,可以或许展示当前被打开的文件和当前的光标位置。
同时我们打算对整个终端视图做一些划分和重构。
首先先介绍一下编辑器各个组件的定位:
编辑器editor:此组件重要在不同的用户界面组件(当前仅View)之间举行协调。
视图View:此组件吸收来自编辑器的每个与文本相干的事件,例如字符的按键输入、换行等。视图使用此信息来举行渲染,并将文本修改事件转化并传递给缓冲区buffer。
缓冲区buffer(一会儿会介绍到):此组件将生存我们的文本。本项目我们只会从处置惩罚ascii码的字符,
不会针对全角字符、emoji符号举行处置惩罚
,所以对这类特别字符的展示和编辑可能会有异常。
具体来说,红框内部门是编辑器的重要交互部门,我们把它用一个名为view的结构体来表示;下方橙黄色框内的部门我们把它用status_bar的结构体来表示,它会显示编辑器的一些状态信息,如当前打开的文件名和当前光标在第几行第几列。
View结构
首先我们来重构项目部门代码,来把一些现有功能放入view结构体以及它的方法中,因此我们的editor结构体应该持有一个View
type editor struct {
view *view.View
needQuit bool
}
复制代码
而对于View来说,因为光标只能在View内移动,所以指示光标位置的TextLocX、TextLocY应当被移动到View结构的成员中。
type View struct {
TextLocX int
TextLocY int
}
复制代码
别的和View相干的函数页应被重构为View的方法,包括
CursorPos
Render
MoveCursor
作业1
按“View结构”的要求,重构代码。
Code Review
我的实现
简单的Buffer
缓冲区是一种常见的结构,它生存了文本编辑器修改和显示文本文件所需的一切。视图与缓冲区交互以在屏幕上出现文本。在许多文本编辑器中,您可以轻松地从一个缓冲区切换到下一个缓冲区,从而允许您并行打开多个文件。
缓冲区的实现细节因文本编辑器而异。例如,Nano 使用一种简单直接的缓冲区结构:生存文件时,缓冲区的内容(不包括语法高亮显示的颜色等数据)会生存到磁盘。而Vim 具有复杂的内部结构,即使在处置惩罚大型文件时也能高效地处置惩罚操作,并且包括一个单独的屏幕缓冲区,用于表示当前屏幕上可见的内容。这些计划选择反映了每个编辑器的愿景:Nano 旨在成为一个小型、轻量级的编辑器,适用于快速更新设置文件。而 Vim 则被计划为一个功能齐全、功能丰富的文本编辑器,非常适合处置惩罚冗长的文件。
作业2 简单的buffer
创建一个名为 Buffer 的新结构体,此中包含一个 string切片
更改View结构以容纳一个Buffer
buffer提供load_file方法:该方法读取文本,并将文本内容存到buffer中,一行文本对应buffer中的一个string元素
你可以使用bufio.NewScanner的scan方法来逐行读取文本
逐行在终端上渲染Buffer中的每个string元素。对于屏幕上的每个空行,仍然渲染一个 ~
Code Review
我的实现
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
麻花痒
金牌会员
这个人很懒什么都没写!
楼主热帖
【SQL server速成之路】——身份验证及 ...
容器开发运维人员的 Linux 操作机配置 ...
2022年安装Kali Linux最详细过程,以及 ...
我今年12岁了,我喜欢打游戏,怎么能成 ...
密码学奇妙之旅、02 混合加密系统、AES ...
kubectl使用技巧:如何更方便地操作多 ...
窄带传输与LoRa扩频传输技术应用方案对 ...
猜
Redis哨兵
Redis安装,主从复制、哨兵模式、集群 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表