使用鼠标获取 shell 中选定的字符

Get selected character in shell with mouse

很好奇不同的代码是怎么写的。当我开始使用 Termux 时,我和一个家伙在一起:

像Vim这样的文本编辑器如何才能得到你选择后写的字符?

是否可以在 C 或 C++ 等低级语言中不使用外部库?

我正在阅读 Nano 的代码,但它使用外部库来执行此操作。

您可以在 C 中使用 termios.h 来完成此类低级任务。 您应该简单地使用 termios.h 头文件中的函数禁用一些默认的 shell 功能,然后使用转义序列移动光标和 set/get 字符。然后你可以制作缓冲区并按照你喜欢的方式存储或编辑它们。

查看 this 指南。你会学会做这样的事情。

一般来说,终端仿真器(跟随旧的硬件终端)是输出设备,几乎无法查询实际显示的内容。 'termios.h' 不会提供很多帮助。一些库(如 curses)提供了更好的输出控制,但查询屏幕内容的能力相对较弱。

大多数知道在屏幕上执行操作的代码(例如,vim、emacs)会跟踪屏幕上显示的内容,以及光标位置(或选定区域) , 并使用这两条信息来执行编辑。

一个特例是使用 GUI 框架(GTK、Qt 等)的软件。它们的文本小部件将提供 API 到 query/set 显示的数据、选定的数据等。此 API 是基于应用程序中存储的数据副本提供的。