就像vim,nano和其他一些命令行文本编辑器一样。 进入应用程序时,它会变成另一个基于文本的屏幕,并且应用程序可以独立地将每个单个字符修改为UI,而无需任何命令行屏幕滚动(当仅输出字符以填充我自己的程序中的屏幕时,终端会自动滚动),甚至可以处理控制台屏幕中的鼠标事件。
var countBs = function (word) {
var count = 0;
for (var i = 0; i < word.length; i++){
if (word.charAt(i) == 'B'){
count += 1;
};
}
return count;
}
然后退出应用程序,屏幕将恢复,并且看起来该应用程序从不输出(应用程序屏幕根本不可能覆盖外部输出):
1
~
~
~
~
~
~
~
-- VISUAL -- 0,0-1 All
对于Windows,曾经有一个类似的“ EDIT”命令。
如何制作相似的文字来实现基于文本的UI?我应该调用哪种API?
这取决于操作系统还是终端类型?
我希望它可以在Linux(以及通过SSH)和Windows命令行上运行。有什么解决方案可以同时使用这两种解决方案,还是我必须分别实施?
我需要用C#(.NET Core)开发它,因此首选托管代码解决方案,但可以使用本机(C语言)解决方案。
答案 0 :(得分:2)
理论上可以用多种方法来完成,但是想到的最明显的解决方案是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中工作。