专业的JAVA编程教程与资源

网站首页 > java教程 正文

如何使用 Java 构建命令行文本编辑器(第 1 部分)

temp10 2024-09-30 00:25:56 java教程 203 ℃ 0 评论

想知道文本编辑器是如何工作的、shell 脚本如何改变终端文本颜色、在不滚动的情况下更新行或移动光标?在这里,学习如何。

您是否想知道文本编辑器是如何工作的,或者 shell 脚本如何更改终端文本颜色、在不滚动的情况下更新行或移动光标?惊喜,惊喜:即使作为 Java 开发人员,我们也可以做到这一点!

在本系列中,我将引导您使用Java构建基于终端的文本编辑器。

如何使用 Java 构建命令行文本编辑器(第 1 部分)

在第 1 部分中,学习如何使用 ANSI 转义码和原生 C 库通过 Java 进行精美的文本输出、与终端交互以及构建文件查看器框架。


视频中有什么

我们将通过解释一般项目设置来开始视频。事实上,要让我们的文本编辑器工作,您唯一需要做的就是安装 Java。我们将从一个空白的 Java 类开始,从那里开始我们将朝着工作文件查看器框架的方向努力。

作为一个简短的说明,该视频侧重于 Unix/macOS 终端。Windows 支持将在以后的剧集中添加。

要了解文本编辑器的工作原理,您首先需要了解ANSI 转义码是什么。它们是您输出到终端的特定字符串,可让您删除屏幕、单行、定位光标、更改文本颜色等等。更好的是,所有现代终端都默认理解它们。

接下来是了解如何将终端设置为“原始模式”。默认情况下,您的终端会逐行处理文本,回显我们键入的每个字符等等。我们不想要所有这些。但是,要进入原始模式,我们需要了解原生Unix API 以及如何使用 Java 访问它们。

Termios API 就是这样一种 API。它可以有效地让您将终端设置为原始模式;因此,我将向您展示如何使用 JNA访问 Termios API — 并执行相当多的按位与运算以使您的终端进入正确的模式。

有了 ANSI 转义码和终端原始模式知识,我们终于可以创建终端编辑器骨架了。当我们启动编辑器时,我们希望看到一个清晰的屏幕。此外,所有空行都应该以“~”符号开头,我们还应该在屏幕底部有一个漂亮的小状态栏——是时候实现了!

然而,为了正确实现状态栏和“~”符号,我们需要终端窗口实际有多少行和多少列的信息。您无法使用 Termios API 获取该信息,因此我们需要为此使用另一个原生 Unix API:IOCTL API。调用 IOCTL 时需要注意一些注意事项,因此我们将重点关注这一点。最终,连接 IOCTL API 后,我们的终端骨架实际上可以按预期工作,使用整个终端的宽度和高度。

我们快到了这一集的结尾,要不是因为一些微小的、讨厌的错误,比如屏幕闪烁和错误的光标定位。因此,我们将优化负责该行为的方法调用。

那是我们刚刚经历的很多概念!这就是为什么我们现在要结束,看看接下来会发生什么:加载和显示文本文件,以及能够移动光标。


https://youtu.be/kT4JYQi9w4w

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表