【问题标题】:Ruby gem command line application: creating a new session in bashRuby gem 命令行应用程序:在 bash 中创建新会话
【发布时间】:2015-08-06 02:32:55
【问题描述】:

我正在尝试让我的命令行游戏在bash:
中进入自己的会话(我不知道名字是什么,但看起来像这样)

我的第一次尝试是这样的:
为了完成上述操作,我使用:
system('clear')
和转义键\r\e 重写光标当前位置上方的行:
print "\r\e[#{lines}A"

我想要的是当命令行应用程序退出时,终端恢复到之前的状态,就好像什么都没发生一样,就像使用nanoless和许多其他命令行工具一样。

如何使用 ruby​​ 让命令行应用程序做到这一点?

【问题讨论】:

  • 我怀疑nanoless 是用Ruby 编写的,它们可能使用的是低级终端函数。看看 Ruby 中的 curses 库。 Curses 是一个来自编写 vi 编辑器的包,它(以及后来的 ncurses)是一个 C 库:ruby-doc.org/stdlib-2.0.0/libdoc/curses/rdoc/Curses.html
  • 在您使用的任何 GUI 中创建一个新窗口,在其中运行游戏,然后在退出时关闭窗口可能会更简单。问题是你想撤消clear 命令,而且你不能不使用窗口系统。
  • 我会看看curses。谢谢。

标签: ruby bash command-line gem


【解决方案1】:

我认为您正在寻找rmcupsmcup 终端功能。

print `tput smcup`
system('clear')
puts 'We are on alternate buffer'
puts 'press enter to switch back'
gets
print `tput rmcup`

您可能还想查看"Why doesn't the screen clear when running vi?"

【讨论】:

  • 太棒了!但也许我不再需要system('clear')。这正是我现在正在寻找的。下次我可能会使用curses
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2013-09-03
相关资源
最近更新 更多