当前位置: 首页 > 面试题库 >

您如何在终端中编辑现有文本(并移动光标)?

慕高格
2023-03-14
问题内容

我看到了这个演示,它打印出一段文本(就像您在键入时会得到的一样some-command --help),然后 在终端中已经打印出 该文本
后,它又 跳回到文本中的几个关键字并更改了文本颜色。。

在我看来,这太疯狂了。他们是怎么做到的?

开始去想它,我想stdoutstdin在技术上的“IO流”,所以也许这是一个跟踪光标的位置的持久变量?我记得在构建语言解析器时做了类似的事情。

目标是这样的:说您在控制台中键入以下内容,它会输出一个空白数组,因为在Node.js中,它们都是异步的,我们不想每次都在控制台中编写异步函数

$ node app.js
> App.User.all()
=> []

然后在执行异步回调时,返回并编辑,=> []以包含结果:

$ node app.js
> App.User.all()
=> [#<User id:1>, #<User id:2>...]

即使至少还有很多其他问题需要解决(与这个问题无关,我也知道可以定义一个全局回调并执行类似的操作App.User.all(_c)),至少知道如何实现还是很棒的。

终端输出已打印后,如何编辑?


问题答案:

终于发现“演示”:

  • https://github.com/asyncly/cdir/blob/223fe0039fade4fad2bb08c2f7affac3bdcf2f89/cdir.js#L24
  • http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html
  • http://ascii-table.com/ansi-escape-sequences-vt-100.php

  • 定位光标:\033[<L>;<C>H\033[<L>;<C>f(将光标放在L行和C列)

  • 将光标向上移动N行: \033[<N>A

  • 将光标向下移动N行: \033[<N>B
  • 将光标向前移N列: \033[<N>C
  • 向后移动光标N列: \033[<N>D
  • 清除屏幕,移至(0,0): \033[2J
  • 擦除到行尾: \033[K
  • 保存光标位置: \033[s
  • 恢复光标位置: \033[u


 类似资料:
  • 我正在处理flyway Db迁移,我下载了flyway zip文件夹,并将其放在本地计算机上。 sql文件夹中有两个文件,即V1\uu Create\u person\u表。sql和V2\uu添加\u人员。sql。 飞行路线信息 Boxfuse Flyway Community Edition 5.2.4 数据库:jdbc:h2:文件:/foobardb(H2 1.4) 架构版本: Flyway迁

  • 在Android系统中,我们可以通过以下方式更改光标颜色: android:textCursorDrawable=“@drawable/black\u color\u cursor”。 我们如何动态地做到这一点? 在我的情况下,我已经将光标绘图为白色,但我需要改变黑色怎么办?

  • 我开发了一个应用程序,我在其中反复使用同一个textview,所以我需要经常清除textview。 由于它与UI相关,我必须在UI线程上执行此任务,但仅清除textview就需要5-6毫秒,我想这似乎非常巨大。有谁能帮助我减少这个时间,这样我就可以非常顺利地管理我的UI任务,而不跳过任何帧? 我正在附上我的代码段以供参考,在这里我尝试了两种方法,但最短的时间是5毫秒。 有什么改进绩效的建议或替代方

  • 我正在android studio中使用java开发和应用程序,希望在RecyclerView函数中编辑文本。我该怎么做?

  • 问题内容: 我需要将插入符号移动到节点的末端,例如在Gmail注释小部件上。 我在StackOverflow上阅读了线程,但是这些解决方案基于使用输入,并且不适用于元素。 问题答案: 还有另一个问题。 如果的解决方案工作DIV不包含其他元素multilined。 例如,如果一个div包含其他div,而这些其他div里面包含其他内容,则可能会出现一些问题。 为了解决这些问题,我安排了以下解决方案,它

  • 编辑文本 要选择一种文字图层,请执行下列操作之一: 选择“移动”工具 并在画布上双击文字图层。 选择横排文字工具 或竖排文字工具。在“图层”面板中选择文字图层,或者单击文本流以自动选择文字图层。 在文本中定位到插入点,然后执行下列操作之一: 单击以设置插入点。 选择要编辑的一个或多个字符。 根据需要输入文本。 要将更改应用到文字图层,请执行下列操作之一: 选择一个新工具。 在“图层”面板中单击某个