vscode本身不提供自动繁简转换能力,需借助node脚本调用zh-conv等库实现;s2t/t2s函数仅转换中文字符,不自动识别输入类型,须手动指定调用,且结果需通过自定义命令写入编辑器。

VSCode 本身不提供“自动识别并转换繁体中文字符”的 Node 运行时能力——它不是文本处理器,也没有内置繁简互转引擎。所谓“自动识别并转换”,实际要靠你写的 Node 脚本 + 外部库(如 zh-conv 或 node-chinese-conv)来实现,VSCode 只负责运行和调试。
Node 脚本里怎么调用繁简转换?
核心是选对库、传对编码、注意默认行为。目前最稳定的是 zh-conv,它不依赖全局环境变量,纯 JS 实现,支持同步/异步调用:
-
npm install zh-conv后,在脚本中const { s2t, t2s } = require('zh-conv'); -
s2t('你好') → '你好'(简→繁,简体字不变);t2s('你好') → '你好'(繁→简,繁体字才变) - 它只处理 Unicode 中文字符,不会碰英文、数字、标点;也不会自动检测输入是简还是繁——必须你明确调用
s2t或t2s - 若输入含混合内容(如
"Hello世界"),s2t只转“世界”,其余保留原样
VSCode 里怎么一键运行转换脚本?
不能靠设置或插件“自动触发”,必须手动执行或绑定快捷键。推荐用 VSCode 的 tasks.json 配合 node 命令:
- 在项目根目录建
convert.js,内容类似:const { s2t } = require('zh-conv');<br>console.log(s2t(process.argv[2] || '默认文本')); - 配置
.vscode/tasks.json,定义一个 task:{<br> "version": "2.0.0",<br> "tasks": [{<br> "label": "Convert to Traditional",<br> "type": "shell",<br> "command": "node convert.js",<br> "args": ["${input:promptText}"],<br> "group": "build"<br> }],<br> "inputs": [{<br> "id": "promptText",<br> "type": "promptString",<br> "description": "Enter text to convert"<br> }]<br>} - 按
Ctrl+Shift+P→Tasks: Run Task→ 选Convert to Traditional,输入文字即可看到转换结果输出在终端
为什么直接在 JS 文件里写 s2t('測試') 却没效果?
常见卡点不是代码写错,而是 Node 环境没加载或编码被干扰:
- VSCode 默认用系统 locale 启动 Node,Windows 上若系统区域设为“中文(简体)”,某些旧版 Node 会把
process.stdout设为 GBK,导致繁体字输出乱码——加process.stdout.setEncoding('utf8');开头可解决 -
zh-conv对全角/半角标点、Unicode 异体字(如「為」「為」)有不同处理逻辑,t2s('為')返回「为」,但t2s('為')可能不变——这不是 bug,是库按《通用规范汉字表》做的映射 - 别用
iconv-lite或Buffer手动转编码再传给s2t:它只接受字符串,传Buffer会静默失败,返回空字符串
真正麻烦的从来不是“怎么装库”,而是“怎么让转换结果进到你正在编辑的文件里”——VSCode 没 API 允许扩展直接修改当前文档内容后再保存,得靠自定义命令 + vscode.workspace.applyEdit(),这部分容易漏掉权限声明或异步等待,一跑就报 Illegal value for 'line'。











