InkCommandStyle
一个功能强大的 VSCode Ink 语言插件,为 Ink 脚本提供完整的语法高亮、可视化调试和智能跳转功能。
✨ 主要功能
🎨 完整的语法高亮
支持所有 Ink 语法元素的颜色高亮:
- 对话格式 -
角色: 对话内容 (角色橙色粗体,对话柔和灰)
- 选择标记 -
* + (紫色粗体)
- 聚合点 -
- (黄色粗体)
- 跳转符号 -
-> <- (蓝色粗体)
- 跳转目标 - 蓝色下划线,可点击跳转
- Knot定义 -
=== name === (黄色粗体)
- Stitch定义 -
= name (青绿色粗体)
- 关键字 -
VAR CONST if else true false 等
- 变量 - 浅蓝色
- 字符串 - 橙色
- 数字 - 绿色
- 注释 - 绿色
- 自定义命令 -
@命令 参数=值 完整高亮
🖱️ 智能跳转
- Ctrl+点击 跳转目标(如
-> enter_castle)跳转到定义
- F12 跳转到定义
- 支持 Knot 和 Stitch 的跳转
- 支持点分语法(如
knot.stitch)
📊 可视化调试面板
右键菜单选择 Ink: 打开脚本可视化面板,提供:
- 脚本结构视图 - 树形展示所有 Knots 和 Stitches
- 选项调试 - 列出所有选择项及其位置
- 统计信息 - 显示 Knots、Stitches、选项数量
- 语法高亮 - 内容区域完整语法高亮
- 点击跳转 - 点击任何元素直接跳转到源代码
- 实时更新 - 编辑文件时自动刷新
- 自动过滤 - 忽略注释和
@ 开头的自定义命令
🎮 故事预览面板
执行 Ink: Preview Story 命令,提供完整的交互式故事预览:
- 实时预览 - 运行和测试 Ink 故事
- 选择交互 - 点击选项或按数字键(1-9)选择
- 对话高亮 - 自动识别并高亮
角色: 对话 格式
- 自定义命令 - 自动隐藏
@ 开头的命令,不干扰阅读
- 命令堆栈提示 - 悬停在有紫色竖线的文本上查看相关自定义命令
- 命令语法高亮显示(命令名、参数名、参数值)
- 支持多个命令的堆栈显示
- 点击跳转源码 - 点击任意文本行跳转到编辑器对应位置
- 光标自动定位到行首,方便立即编辑
- 焦点保持在编辑器,提升编辑体验
- Live Update - 保存文件时自动刷新预览
- 可通过工具栏 checkbox 开关
- 支持 INCLUDE 指令的自动更新
- 错误提示 - 显示编译错误的详细信息和行号
- 故事回退 - Rewind 按钮返回上一个选择点
- 快捷键支持
Ctrl/Cmd + R - 重新开始故事
Ctrl/Cmd + Z - 回退到上一个选择
1-9 - 快速选择对应选项
📋 大纲支持
- 在 VSCode 大纲视图中显示文件结构
- Knots 显示为函数图标 🔵
- Stitches 显示为方法图标 🟣(嵌套在对应 Knot 下)
- 支持快速跳转(Ctrl+Shift+O)
🎯 文件关联
- 支持
.ink 和 .ink2 文件
- 自动识别 Ink 语言
📦 安装
- 下载
.vsix 文件
- 在 VSCode 中按
Ctrl+Shift+P
- 输入
Extensions: Install from VSIX...
- 选择下载的
.vsix 文件
或者从 VSCode 扩展市场搜索安装(即将上线)。
🚀 使用方法
基本使用
- 打开或创建
.ink 文件
- 自动获得语法高亮
- 使用 Ctrl+点击或 F12 跳转到定义
可视化面板
- 在
.ink 文件中右键
- 选择
Ink: 打开脚本可视化面板
- 在右侧面板查看脚本结构
- 点击任何元素跳转到源代码
故事预览
- 打开
.ink 文件
- 按
Ctrl+Shift+P 执行 Ink: Preview Story
- 在预览面板中:
- 点击选项或按数字键进行选择
- 悬停在有紫色竖线的文本上查看自定义命令
- 点击任意文本跳转到源码位置
- 使用工具栏按钮控制故事流程
- 修改并保存文件,预览自动更新(需开启 Live Update)
大纲视图
- 打开 VSCode 侧边栏的大纲视图
- 查看文件的 Knot 和 Stitch 结构
- 点击跳转到对应位置
🎨 语法示例
// 注释
INCLUDE Bootstrap.ink
=== start ===
VAR player_health = 100
欢迎来到测试故事!
@setBackground image=forest.jpg
你来到了一片神秘的森林。
@playSound sound=birds.mp3 volume=0.5
守卫: 站住!这里是禁区!
主角: 我有重要的事情要做。
* [接受挑战] -> fight
* [尝试说服] -> persuade
+ [离开] -> END
= fight
@showCharacter name=守卫 position=left
战斗开始了...
~ player_health = player_health - 20
-> check_health
= check_health
{ player_health > 0:
你还活着。
- else:
你失败了。
-> END
}
🛠️ 开发
环境要求
- Node.js 16+
- TypeScript 5+
- VSCode 1.80+
构建
npm install
npm run compile
调试
- 在 VSCode 中打开项目
- 按
F5 启动调试
- 在新窗口中打开
.ink 文件测试
打包
npm install -g @vscode/vsce
vsce package
📝 特性详解
自定义命令支持
支持 @命令 参数=值 格式的自定义命令高亮:
@ 符号 - 蓝色粗体
- 命令名 - 黄色粗体
- 参数名 - 浅蓝色
= 符号 - 红色
- 参数值 - 橙色
对话格式支持
识别 角色: 对话内容 格式:
- 角色名 - 橙色粗体
- 冒号 - 灰色
- 对话内容 - 柔和灰色
- 预览面板中自动高亮显示
自定义命令
- 预览时自动隐藏
@ 开头的命令行
- 悬停显示命令堆栈(紫色左侧竖线标识)
- 命令语法彩色高亮:
- 命令名(
@setBackground)- 蓝色粗体
- 参数名(
image)- 青色
- 参数值(
forest.jpg)- 橙色
INCLUDE 支持
- 支持
INCLUDE filename.ink 指令
- Live Update 时自动重新加载被包含的文件
- 编译错误时显示完整的文件路径信息
📄 许可证
ISC
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📮 反馈
如有问题或建议,请在 GitHub Issues 中提出。
| |