gpt4 book ai didi

c - 修改终端中已有的文本

转载 作者:太空狗 更新时间:2023-10-29 11:06:45 25 4
gpt4 key购买 nike

有没有办法通过完全修改文本来修改终端中已有的文本,但不同于使用 \r 清除简单的进度条

例如

user@machine$ grep -R 'mystuff' .
result1
result2
result3
user@machine$

例如使用箭头移动“虚拟”光标 (|)

user@machine$ grep -R 'mystuff' .
|result1
result2
result3
user@machine$

最重要的是,没有清理终端?

不,它不是 Modifying text in the terminal 的副本因为它要求不同类型的文本操作,而另一个问题的描述特别要求进度条示例。

最佳答案

您可以使用转义序列在 linux 终端上执行各种操作。您可以从以下引用资料中了解这一点:

直接用转义序列控制终端是非常棘手的,因为你必须处理各种边界情况和副作用,这取决于终端的实际内容和你在上面显示的文本类型(ASCII,UTF-8或其他异国情调的变体......)

您的用例使它变得更加困难,因为您必须首先确定由 grep 等不相关命令生成的终端内容,而且还取决于终端特定的宽度和高度,shell 提示符等

作为 qemacs 的共同作者和维护者,我可以告诉你让进程缓冲区正确运行,以透明的方式处理 shell 和程序输出以及用户输入,同时让所有这些内容在编辑器的缓冲区中自由编辑是多么彻底的噩梦和 window 。可以看看源文件tty.cshell.c如果你不是胆小的话。

因此我敦促您从不同的角度重新考虑您的问题:

  • 你想达到什么目的?
  • 你能通过过滤命令的输出来做到这一点吗?
  • 您能否通过创建 shell 别名或 shell 脚本来对命令的输出进行后处理?
  • 您可以使用 emacs、qemacs 或其他一些支持 shell 的 IDE 来实现所需的功能吗?

关于c - 修改终端中已有的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55345201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com