tzfun / vue-web-terminal

A beautiful web-side command line window plugin (simulating a terminal).
https://tzfun.github.io/vue-web-terminal/
Apache License 2.0
269 stars 33 forks source link

支持注入命令、远程输入 #71

Closed elasticdotventures closed 8 months ago

elasticdotventures commented 11 months ago

👋🏻😁请原谅我的基本语言能力,HSK 2。

vue-web-terminal 新手 尝试改编 vue-command 中的一些代码

使用 vue-command 我可以注入字符然后执行命令。 我希望添加 onIdle 回调,该回调将通过为用户注入模拟击键来开始输入命令,如果有任何用户输入,则自动输入将被清除。

与 ChatGPT 配对的示例非常有用。

我希望 FlashAPI 允许我将字符作为命令注入,但我不知道是否可能,但仍在学习,所以我将发布更新。 谢谢!

elasticdotventures commented 11 months ago

简短版本是一种访问“terminalCmdInputRef”的机制,您会接受贡献吗? (将是一个很好的第一个项目)

tzfun commented 11 months ago

我不太能理解你想实现的效果是什么样子的,vue-web-terminal目前也有注入字符然后执行命令的API,另外onIdle的回调在什么场景会用到呢?远程连续输入字符,当idle一定时间后触发回调然后结束远程输入吗?如果是这个场景现有API其实也可以实现,输入开始和结束的时机是由开发者自己控制的,当remote idle之后开发者控制结束本次输出即可。

另外是不太建议直接开放控制 terminalCmdInputRef 的,因为它是最原生的输入口,但在上层还有一些逻辑需要执行之后才能得到最后真正的command:命令ansi码和ASCII码过滤、高亮格式化、代码提示等,如果直接控制这个 Ref 将会遗漏相应处理的可能。

如果你觉得中文不太方便交流我们也可以用英文 😄 ,最后欢迎一起贡献代码,有很好的想法都是可以接受的

elasticdotventures commented 10 months ago

不太明白你想要达到的效果。

远程注入命令的视觉效果“UI/UX口红”拟人化键入。 如果我可以在远程命令上放置一个类,我也许可以完全使用 CSS 来完成此操作。 这只是口红,我可以用“vue-command”(一个类似的库)来做。 💄😁

vue-web-terminal 目前也有一个用于注入字符然后执行命令的 API。

我错过了,再看看。 我看到了用于注入消息的 Flash API,但只找到了用于命令的“execute()”。 我在 NPM 3.1.8 包上遇到了很多困难,直到我从存储库中获取了类型并找到了测试版。 自述文件引用了测试版,但包不匹配!

另外,onIdle回调在什么场景下使用? 如果远程连续输入字符,是否会在空闲一段时间后触发回调,然后远程输入结束?

在“onIdle”期间出现空白提示后,机器人自动驾驶仪开始打字。 在 vue-web-terminal 的默认/示例中,想象一下 init-Log 消息,然后在 10 秒后键入,暂停 1.5 秒..光标闪烁然后按“ENTER”执行“help”

如果使用这个场景,其实现有的API就可以实现。 输入开始和结束的时间由开发人员控制。 远程空闲后,开发者可以控制本次输出的结束。

🤔 嗯。 怎么不明显..有任何提示吗?

另外,不建议直接打开控制端CmdInputRef,因为它是最原生的输入端口,但是上层还需要执行一些逻辑才能得到最终真正的命令:command ansi码和ASCII码过滤、高亮格式化、代码提示等。如果直接控制这个Ref,就会错过相应处理的可能。

👍🏻 https://en.wiktionary.org/wiki/Chesterton%27s_fence

如果您觉得用中文沟通不方便,我们也可以用英文😄。 最后,欢迎大家贡献代码。 任何好的想法都可以接受。

我的母语是英语,来自美国但居住在澳大利亚,曾多次到中国学习和旅行,经常在淘宝上购买电子产品。 我妻子的家人在餐桌上说话很流利,这很好 - 我确实喜欢这门语言,并且经常将一些内容融入到我的编码约定中。 但我的技能很差,而且我严重依赖谷歌翻译来表达想法,我不能 100% 确定我所说的内容是否被理解。 很乐意帮助您完成英文文档。

我花了大部分分配的时间来进行此集成,努力让 vue3 版本正常工作。 作为贡献,我正在考虑添加一个 github 操作,将类型发布到包中。 拥有正确的类型使集成变得更加容易! (我不确定这些是否应该在 npm 包中分发)。

tzfun commented 10 months ago

远程注入命令的视觉效果“UI/UX口红”拟人化键入。

这个效果如果是在记录中输入是可以通过 pushMessage 或者 appendMessage(Vue3版本已开发即将发布)来实现的。 如果是在命令行键入位置(带光标)输入,目前确实还不能实现,是否增加一个修改正在键入的命令行的接口就可以了?

我看到了用于注入消息的 Flash API,但只找到了用于命令的“execute()”。

你看到的这两个其实就对应上面我说的两种情况,Flash API是对已经执行过或正在执行的记录进行修改,execute则是直接模拟用户一次性键入一个命令然后执行,不过要想达到你所说的拟人化输入确实还不太行,需要新增一些API。

直到我从存储库中获取了类型并找到了测试版。 自述文件引用了测试版,但包不匹配!

Beta 版本确实还未达到发布的标准,这也是我最近正在做的事情,完成测试之后才会发布新的版本,不过我不是专业做前端的,对 TS + Vue3 + Vite的打包发布还不太熟悉,如果你熟悉它们欢迎和我一起贡献Vue3版本. 😄

在“onIdle”期间出现空白提示后,机器人自动驾驶仪开始打字。

onIdle 是在机器人自动键入时 idle 一定时间后认为需要机器人已经输入结束了,需要用户来enter执行是吗?不知道我理解的对不对,感觉还是不太能理解这个回调的用途,似乎用其他的方式也可以替代它。

👍🏻 你很厉害,有如此丰富的经历!欢迎你一起贡献此插件,如果你也有 WeChat 我们可以加个好友交流,在 README 中有我的 WeChat 联系方式。