如何编辑现有的文本(和移动光标)在终端?(How do you edit existing text

2019-06-24 10:43发布

我看到这个演示一旦打印出来的一段文字(就像你在打字的时候得到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) )。

如何编辑端子输出它已经被打印后?

Answer 1:

最后发现,“演示”:

  • 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


Answer 2:

如果您在Mac OX X的工作,我相信该计划埃迪确实像“编辑终端输出它已经被打印后”。 (见“埃迪(文本编辑器)在维基百科”)。

在File菜单下,选择“新建”,然后在“设置/文件设置...”,选择“弹窗”。 之后,尝试一些UNIX命令历史:日期,LS,CAL等,然后把你的光标和编辑这些。

我会试着用节点,但在Mac OS X 10.5.8我不能安装它(节点)。



文章来源: How do you edit existing text (and move the cursor around) in the terminal?