我正在尝试用 Ruby 编写一个 shell,为了实现制表符完成,我正在使用 WinAPI 函数getch
从用户那里一次读取一个字符,检查制表符。
这个问题是退格键:
- 它将光标移到比提示更远的位置(例如,使用 prompt
hello>
,用户可以将光标退格到h
. 我希望它停在最后一个空格。 - 当用户的文本溢出到控制台的下一行时,退格键不会向上移动到上一行。
(我知道这两种行为都是设计使然。)
我对这些问题的设想解决方案包括控制光标移动;我需要知道光标在哪里,并且能够移动它。
在 Linux 上,我会使用 ANSI 转义序列,但 Windows 控制台不支持这些转义序列。
我查看了 WinAPI 并试图找到可以让我这样做的函数,但我能找到的只是GetConsoleCursorInfo
函数,它只返回光标的大小和可见性。
示例将不胜感激,因为我无法将 Win32API 类用于原始函数以外的任何东西。
谢谢。