我使用ruby curses包(ruby 2.1.5)。
在某些情况下,我希望在程序结束时清除 not 屏幕,以便 Curses.stdscr 的最终内容为程序退出时仍在我的终端上显示。
我尝试将电话留给 Curses.close_screen ,但终止屏幕在退出时仍然被清除。
有没有办法告诉ruby中的curses在程序终止时不清除屏幕?
提前谢谢。
答案 0 :(得分:1)
捆绑的Ruby curses模块缺少(许多)curses函数,例如reset_shell_mode
,这是执行此操作的常用方法:
reset_prog_mode
和reset_shell_mode
例程还原 终端到"程序" (在curses中)或" shell" (在 诅咒)状态。这些是endwin(3x)自动完成的 并且,在endwin
之后,doupdate
,所以他们通常是 不叫。
或者,您可以使用MRuby(提供此功能)。
在任何一种情况下,退出都可以将终端的特殊键设置为application mode。解决方法是发送转义序列(在终端数据库中找到 rmkx
)。
答案 1 :(得分:0)
我明白了:事实证明,如果我退出程序时使用退出!而不是退出,则无法调用curses的屏幕重置逻辑,并且 stdscr 的最新内容仍保留在我的屏幕上。
在调用 Curses.init_screen ...
之前,我还会执行以下操作{{1}}
...我在退出之前发出此命令! ...
{{1}}
(我想接受这个答案,但我不能再这样做了2天。我会在那个时候这样做。)