ansi-escapes

中文文档
7.3.0发布于 2026/02/05MITTypeScriptES Module近 30 天下载 5亿

用于操纵终端的ANSI转义码

中文使用文档
文档目录42 节
  1. 安装
  2. 用法
  3. API
  4. cursorTo (x, y)
  5. cursorMove (x, y)
  6. cursorUp(计数)
  7. cursorDown(计数)
  8. cursorForward(计数)
  9. cursorBackward(计数)
  10. cursorLeft
  11. cursorSavePosition
  12. cursorRestorePosition
  13. cursorGetPosition
  14. cursorNextLine
  15. cursorPrevLine
  16. cursorHide
  17. cursorShow
  18. eraseLines(计数)
  19. eraseEndLine
  20. eraseStartLine
  21. eraseLine
  22. eraseDown
  23. eraseUp
  24. eraseScreen
  25. scrollUp
  26. scrollDown
  27. clearViewport
  28. clearScreen
  29. clearTerminal
  30. enterAlternativeScreen
  31. exitAlternativeScreen
  32. beginSynchronizedOutput
  33. endSynchronizedOutput
  34. synchronizedOutput(文本)
  35. 哔哔声
  36. 链接(文本、网址)
  37. 图像(filePath、期权?)
  38. setCwd(路径?)
  39. iTerm.setCwd(路径?)
  40. ConEmu.setCwd(路径?)
  41. 摘要。注释(消息、期权?)
  42. 相关

ansi-escapes

ANSI转义码 用于操作终端

安装

npm install ansi-escapes

用法

import ansiEscapes from 'ansi-escapes';

// Moves the cursor two rows up and to the left
process.stdout.write(ansiEscapes.cursorUp(2) + ansiEscapes.cursorLeft);
//=> '\u001B[2A\u001B[1000D'

或者使用命名的导出…

import {cursorUp, cursorLeft} from 'ansi-escapes';

// etc, as above...

你也可以在浏览器中使用Xterm.js:

import ansiEscapes from 'ansi-escapes';
import {Terminal} from 'xterm';
import 'xterm/css/xterm.css';

const terminal = new Terminal({…});

// Moves the cursor two rows up and to the left
terminal.write(ansiEscapes.cursorUp(2) + ansiEscapes.cursorLeft);
//=> '\u001B[2A\u001B[1000D'

API

cursorTo (x, y)

设置光标的绝对位置。 x0 y0 在屏幕的左上方。

cursorMove (x, y)

设置光标相对于当前位置的位置。

cursorUp(计数)

将游标向上移动指定数量的行。默认是 1。

cursorDown(计数)

将光标向下移动指定数量的行。默认是 1。

cursorForward(计数)

将光标向前移动指定数量的列。默认是 1。

cursorBackward(计数)

将光标向后移动指定数量的列。默认是 1。

cursorLeft

将光标移到左侧。

cursorSavePosition

保存光标位置。

cursorRestorePosition

恢复保存的光标位置。

cursorGetPosition

获取光标位置。

cursorNextLine

将光标移动到下一行。

cursorPrevLine

将光标移动到前一行。

cursorHide

隐藏的光标。

cursorShow

显示光标。

eraseLines(计数)

从当前游标位置向上擦除指定的行数。

eraseEndLine

从当前光标位置擦除到当前行的末尾。

eraseStartLine

从当前光标位置擦除到当前行的开头。

eraseLine

擦除当前的整个行。

eraseDown

从当前行到屏幕底部擦除屏幕。

eraseUp

从当前行到屏幕顶部擦除屏幕。

eraseScreen

擦除屏幕并将光标移动到左上角位置。

scrollUp

向上滚动显示一行。

scrollDown

向下滚动显示一行。

clearViewport

只清除可见的终端屏幕(视口),而不影响回滚缓冲区或终端状态。

这是一个更安全的选择 clearScreen 这在各个终端上都是一致的。

clearScreen

清除终端屏幕。

[!警告) 这使用RIS (Reset to Initial State),它也可以清除一些终端(xterm.js, VTE)中的回滚缓冲区并重置终端模式。考虑使用 clearViewport() 为了更安全的viewport清除。

clearTerminal

清除整个终端,包括回滚缓冲区。(不仅仅是可见的部分)

enterAlternativeScreen

进入 选择屏幕。

exitAlternativeScreen

退出 选择屏幕,假设 enterAlternativeScreen 以前叫过。

beginSynchronizedOutput

开始 同步输出 减少渲染时的闪烁。

endSynchronizedOutput

结束 同步输出。

synchronizedOutput(文本)

将输出封装在 同步输出 在渲染过程中减少闪烁的序列。

哔哔声

输出蜂鸣声。

链接(文本、网址)

创建一个可点击的链接。

支持终端。 使用 supports-hyperlinks 检测链路支持。

图像(filePath、期权?)

显示图像。

看到 term-img 用于更高级别的模块。

输入

类型: Buffer

图像缓冲区。通常读入 fs.readFile()。

选项

类型: object

宽度
高度

类型: string | number

宽度和高度以数字后跟一个单位或单词“auto”的形式给出。

  • N: N个字符单元。
  • Npx: N像素。
  • N%:会话宽度或高度的百分之N。
  • auto:图像的固有尺寸将被用来确定一个合适的尺寸。
preserveAspectRatio

类型: boolean
默认值: true

setCwd(路径?)

类型: string
默认值: process.cwd()

为iTerm2和ConEmu设置当前工作目录。

iTerm.setCwd(路径?)

类型: string
默认值: process.cwd()

通知iTerm2 对当前目录的语义历史进行帮助和启用 点击cmd键的相对路径。

ConEmu.setCwd(路径?)

类型: string
默认值: process.cwd()

通知ConEmu 关于shell当前工作目录。

摘要。注释(消息、期权?)

创建转义代码以在iTerm2中显示“注释”。

注释如下所示:

看到 专有转义码文档 了解更多信息。

消息

类型: string

要在注释中显示的消息。

这个 | 字符是不允许的,将被剥夺。

选项

类型: object

长度

类型: number
默认值:该行的剩余部分

要注释的列数非零。

x

类型: number
默认:光标位置

起始X坐标。

必须与 y 和 length。

y

类型: number
默认:光标位置

从Y坐标开始。

必须与 x 和 length。

isHidden

类型: boolean
默认值: false

创建一个“隐藏”注释。

以这种方式创建的注释可以使用“Show Annotations”iTerm命令显示。

版本与发布记录

ansi-escapes 共发布 28 个版本,首次发布于 2015/08/14;过去 12 个月发布了 1 个版本。

版本发布日期距今
7.3.0latest2026/02/058 个月前
7.2.02025/11/041 年前
7.1.12025/09/231.1 年前
7.1.02025/09/101.2 年前
7.0.02024/05/032 年前
6.2.12024/03/242 年前

关于 ansi-escapes 的常见问题

ansi-escapes 是什么?

用于操纵终端的ANSI转义码

如何安装 ansi-escapes?

在项目目录运行 npm install ansi-escapes,或使用 pnpm add / yarn add / bun add。

ansi-escapes 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

ansi-escapes 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

ansi-escapes 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

ansi-escapes 可以商用吗?

ansi-escapes 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

ansi-escapes 的下载量有多少?

根据 npm 官方下载统计,ansi-escapes 在 2026/10/04 – 2026/11/02 这 30 天内被下载 504,228,888 次,日均约 16,807,630 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

ansi-escapes 还在维护吗?

最新版本 7.3.0 发布于 2026/02/05(8 个月前);至今共发布 28 个版本,其中过去 12 个月发布了 1 个;首次发布于 2015/08/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。