龙空技术网

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

科技狠活与软件技术 102

前言:

而今大家对“编辑器java”大致比较注重,各位老铁们都想要了解一些“编辑器java”的相关资讯。那么小编在网上汇集了一些对于“编辑器java””的相关资讯,希望小伙伴们能喜欢,小伙伴们快快来了解一下吧!

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

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

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

在第 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 后,我们的终端骨架实际上可以按预期工作,使用整个终端的宽度和高度。

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

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



标签: #编辑器java