我正在创建一个由 VT100 转义序列控制的 Telnet CLI 应用程序。例如,要向左导航光标,<ESC>[D 转义序列从 Telnet 服务器发送到客户端,客户端可能是 Putty 或 Gnome 终端。不幸的是,对于长于 Putty 行长度的行,上面的转义序列将不允许将光标导航到当前行上方的行。
一个例子。光标是“|”。评论用'//'标记
----------------
>potato| // Now I press left arrow which sends esc sequence to application
----------------
>potat|o // Works as expected. The cursor moved left
----------------
另一个例子
----------------
>potatopotatopot // This is a long command which goes over two lines
|ato // Now I press left arrow which sends esc sequence to application
----------------
>potatopotatopot // The cursor didn't move, since the escape sequence
|ato // does nothing if the cursor is at the edge
----------------
我一直在寻找在边缘时会环绕的任何其他转义序列,但没有找到。我还没有找到任何将终端模式更改为允许换行的转义序列。
那么这种终端导航一般是怎么处理的呢?