在控制台的输入 space 中添加一个字符串
Add a string to the input space of the console
我真的不知道如何解释这个,所以标题可能具有误导性。
我正在用 C 编写一个小型文本编辑器,并将整个文件的内容保存到一个字符数组中。现在我想以一种方式向用户显示整个字符串,以便用户能够通过定位 cursor/seek 然后键入或删除字符来编辑命令 window 中的字符串。按回车键或其他键会将文本保存到新字符串并将其写入文件。
类似于在 linux 文本编辑器(如 nano 或 vi)中打开文件时发生的情况...您会看到可以在文件中移动并进行更改的光标。
如何在 C 中完成?我不需要它像 linux 编辑器那样,只需将字符串放入输入区域(就像用户键入文本一样)就足够了。
这是通过将某些特殊控制字符写入标准输出来完成的,它可以执行设置颜色、移动光标等操作。有关详细信息,请参阅 https://en.wikipedia.org/wiki/ANSI_escape_code。
但是,如果您希望您的编辑器具有可移植性,或者您不想担心细节,您可能需要考虑使用 ncurses 库 (https://en.wikipedia.org/wiki/Ncurses),nano/vi 这样的编辑器更喜欢使用它而不是自己做。
您必须使用 Terminal capabilities (a.k.a Termcaps)。它们是您的终端可以解释的特殊字符(例如来回移动光标,或清除屏幕)。以下是维基百科对 Termcap 数据库的描述:
A termcap database can describe the capabilities of hundreds of
different display terminals. This allows programs to have
character-based display output, independent of the type of terminal.
On-screen text editors such as vi and emacs are examples of programs
that may use termcap.
通过使用终端功能,您将能够控制光标在编辑器中的行为方式,以及输入字符的显示方式。一个很好的例子就是使用颜色来突出显示语法。
我建议您使用 GNU Termcap library 构建跨终端应用程序。一旦掌握了主要原理,它的用法就比较简单了,我以前用它来实际构建一个shell(例如bash
,或sh
)。
接下来,您可能还想查看规范和非规范终端模式之间的differences。鉴于您希望在编辑器中实现何种功能,您可能希望覆盖终端解释某些输入的方式。
另见:
我真的不知道如何解释这个,所以标题可能具有误导性。
我正在用 C 编写一个小型文本编辑器,并将整个文件的内容保存到一个字符数组中。现在我想以一种方式向用户显示整个字符串,以便用户能够通过定位 cursor/seek 然后键入或删除字符来编辑命令 window 中的字符串。按回车键或其他键会将文本保存到新字符串并将其写入文件。
类似于在 linux 文本编辑器(如 nano 或 vi)中打开文件时发生的情况...您会看到可以在文件中移动并进行更改的光标。
如何在 C 中完成?我不需要它像 linux 编辑器那样,只需将字符串放入输入区域(就像用户键入文本一样)就足够了。
这是通过将某些特殊控制字符写入标准输出来完成的,它可以执行设置颜色、移动光标等操作。有关详细信息,请参阅 https://en.wikipedia.org/wiki/ANSI_escape_code。 但是,如果您希望您的编辑器具有可移植性,或者您不想担心细节,您可能需要考虑使用 ncurses 库 (https://en.wikipedia.org/wiki/Ncurses),nano/vi 这样的编辑器更喜欢使用它而不是自己做。
您必须使用 Terminal capabilities (a.k.a Termcaps)。它们是您的终端可以解释的特殊字符(例如来回移动光标,或清除屏幕)。以下是维基百科对 Termcap 数据库的描述:
A termcap database can describe the capabilities of hundreds of different display terminals. This allows programs to have character-based display output, independent of the type of terminal. On-screen text editors such as vi and emacs are examples of programs that may use termcap.
通过使用终端功能,您将能够控制光标在编辑器中的行为方式,以及输入字符的显示方式。一个很好的例子就是使用颜色来突出显示语法。
我建议您使用 GNU Termcap library 构建跨终端应用程序。一旦掌握了主要原理,它的用法就比较简单了,我以前用它来实际构建一个shell(例如bash
,或sh
)。
接下来,您可能还想查看规范和非规范终端模式之间的differences。鉴于您希望在编辑器中实现何种功能,您可能希望覆盖终端解释某些输入的方式。
另见: