You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS中process.stdout.moveCursor与宽字符的光标错位问题

解决方案:使用终端转义序列按逻辑字符移动光标

process.stdout.moveCursor() 按列宽单位移动光标,而东亚宽字符(中文、日文、全角字符等)占2列,直接使用会导致光标落在字符中间。要实现像按左右箭头那样按完整逻辑字符移动,可直接向终端发送ANSI转义序列,终端会自动处理字符宽度差异。

核心转义序列

  • 向左移动N个字符:\x1b[${N}D
  • 向右移动N个字符:\x1b[${N}C

示例代码

替换手动计算偏移的逻辑,直接用转义序列实现需求:

process.stdout.write("Test data! 測試資料123テスト");
// 向左移动5个完整字符(自动适配半角/全角宽度)
process.stdout.write("\x1b[5D");

兼容性说明

你使用的Windows 10/11命令提示符、Ubuntu及WSL终端均原生支持这类标准ANSI转义序列,无需额外配置。相比手动跟踪字符宽度计算偏移,该方法更可靠且无需维护字符宽度判断逻辑。

内容的提问来源于stack exchange,提问作者SyndRain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:14:53