Als*_*ein 2 c c# linux windows console-application
就像 vim、nano 和其他一些命令行文本编辑器一样。当进入应用程序时,它变成另一个基于文本的屏幕,并且应用程序可以独立地修改每个字符作为UI,而无需任何命令行屏幕滚动(当在我自己的程序中简单地输出字符来填充屏幕时,终端会自动执行滚动),甚至可以处理控制台屏幕内的鼠标事件。
1
~
~
~
~
~
~
~
-- VISUAL -- 0,0-1 All
Run Code Online (Sandbox Code Playgroud)
然后退出应用程序,屏幕恢复并看起来像应用程序从未输出(应用程序屏幕根本不可能覆盖外部输出):
~$ vim
~$
Run Code Online (Sandbox Code Playgroud)
对于 Windows,曾经有一个类似的“EDIT”命令。
我怎样才能制作一个类似的来实现基于文本的用户界面?我应该调用哪种 API?
它取决于操作系统或终端类型吗?
我希望它可以在 Linux(以及通过 SSH)和 Windows 命令行上运行。有没有适用于两者的解决方案,或者我必须单独实施它们?
我需要用 C# (.NET Core) 开发它,因此首选托管代码解决方案,但本机(C 语言)解决方案也可以。
理论上可以有多种方法来完成此操作,但我想到的最明显的解决方案是ncurses。它广泛用于基于控制台的应用程序,包括 Vim。
它是一个 C 库,在http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/上有一个很好的教程
当我还是一个非常新手的 C 程序员时,ncurses 是我使用的第一个库,所以我可以说,根据我的经验,它相当容易使用,只要你已经了解少量的 C。
尽管您说您可能对纯 C 库感到满意,但搜索表明它存在 C# 包装器,例如https://github.com/sushihangover/CursesSharp
编辑:我从Linux的角度回答了;我现在意识到您也想要 Windows 答案。我还没有在 Windows 中尝试过 ncurses,但是上面链接的 ncurses 网站声称它已经被移植到 MinGW 并且已经可以在 Windows 7 中工作。