是否可以使用 Screen 将我的输入与整个 shell 分开?我的目标类似于状态行,如果我输入的内容超出单行的内容,状态行就会扩展,并且当我按 Enter 时,状态行会“提交”/“发送”到 shell。
我希望使用 screen+telnet 组合一个简单的配置,用作 MUSH/MUD/MUCK/MOO 客户端。使用 telnet 的当前问题是从远程服务器发送的数据被插入到光标位置,如果您键入很长的段落,这会很糟糕。
答案1
一个好的架构是将屏幕分为两个窗口,一个用于命令输入,一个用于程序显示。这基本上就是普通 MUD 客户端所做的事情。您可以在屏幕中使用split
命令 ( C-a S
) 执行此操作。
创建一个命名管道将输入从输入窗口传输到 telnet 窗口:mkfifo mud-input-fifo
。在其中一个窗口中,运行telnet mud.example.com 1234 <mud-input-fifo
或nc mud.example.com 1234 <mud-input-fifo
(nc
是网猫,网络瑞士军刀)。在另一个窗口中,运行rlwrap tee mud-input-fifo
(回卷为任何行输入程序提供行版本)。
Emacs 也可以做到这一点。但你最终会在 Emacs 中实现一个 MUD 客户端,这之前已经完成了(mu.el
,mud.el
,mudel.el
,eMUD,……)。
答案2
这不会执行您所要求的操作,但在许多系统(包括 linux 和大多数 BSD)上,您可以为“rprnt”操作设置一个键:
stty rprnt '^R'
在使用 tty 驱动程序进行输入处理的程序中按下该键 [我认为当您连接到这样的原始服务时 telnet 会执行此操作] 将导致输入行重新显示在下一行
所以你的屏幕将如下所示:
SERVER PROMPT> your text your text your text your textOUTPUT FROM SERVER^R
your text your text your text your text your text_
除此之外,您还需要获得一个真正的 MUD 客户端,例如tinyfugue。