使用鼠标获取 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 是基于应用程序中存储的数据副本提供的。
很好奇不同的代码是怎么写的。当我开始使用 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 是基于应用程序中存储的数据副本提供的。