正确安装并启用 gherkin-sublime:通过 package control 安装后,手动设置语法为 gherkin;删除 # language: zh-cn 以避免中文高亮错乱;tab 补全需自建 snippet;作用域调试须用 ctrl+alt+shift+p 查看真实 scope。

Sublime Text 默认不支持 Gherkin 语法高亮,装了插件也不等于能用——gherkin-sublime 是目前唯一持续维护、适配新版 Sublime 的方案,但中文支持弱、Tab 补全要手动配、# language: zh-CN 容易导致高亮错乱。
如何正确安装并启用 gherkin-sublime
别搜 “Cucumber” 或 “Gherkin for Sublime”,那些大多已停更或不兼容 Sublime 4+。唯一推荐的是 gherkin-sublime:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package - 等待列表加载后,搜索
gherkin-sublime(注意拼写,不是gherkin-sublime-syntax或带下划线变体) - 安装完成后,打开任意
.feature文件,右下角点击当前语法名 → 选择Gherkin;或再按一次Ctrl+Shift+P→ 输入Set Syntax: Gherkin - 若右下角仍显示
Plain Text,说明文件扩展名没被识别:确认文件后缀确实是.feature,且未被其他插件劫持(如某些 YAML 插件会误认)
中文关键字高亮失效或错位?删掉 # language: zh-CN
gherkin-sublime 基于官方 lexer,对非 ASCII 语言声明处理不稳定。现象包括:Scenario 行变灰、Given 后续文本不着色、整段被当注释跳过。
- 最可靠解法:直接删除文件首行的
# language: zh-CN - 改用英文编写(
Feature/Given/When/Then),运行时再通过cucumber --language zh或behave --lang zh加载中文步骤定义 - 若必须保留中文声明,可尝试将文件编码改为
UTF-8 with BOM(菜单File → Save with Encoding → UTF-8 with BOM),但效果不保证 - 避免在
Scenario:后加全角空格或中文冒号,一律用半角:+ 半角空格
Tab 补全 Given/When/Then 要自己配 snippet
语法高亮 ≠ 智能补全。gherkin-sublime 只负责着色,不提供任何自动补全能力。想敲 giv + Tab 出 Given,得手动建 snippet:
- 菜单
Tools → Developer → New Snippet - 填入内容(注意
<scope></scope>必须是source.gherkin):
<snippet><content>Given $1</content><tabtrigger>giv</tabtrigger><scope>source.gherkin</scope><description>Gherkin Given</description></snippet>
- 保存为
Packages/User/gherkin-given.sublime-snippet(同理建when.sublime-snippet、then.sublime-snippet) - 保存后无需重启,新建
.feature文件即可生效;已有文件需光标移出再移回触发重新解析
高亮正常但作用域不对?用 Ctrl+Alt+Shift+P 查看真实 scope
如果你改了配色方案却看不到 Given 变色,大概率是作用域不匹配。比如你设了 "scope": "keyword",但 gherkin-sublime 实际给 Given 打的标签是 keyword.control.gherkin。
- 把光标放在
Given上,按Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS) - 状态栏会显示完整作用域链,例如:
source.gherkin keyword.control.gherkin - 去你的
.sublime-color-scheme文件里,在rules数组中找对应scope字段,只写keyword.control不够,得写全keyword.control.gherkin - 别漏掉
source.gherkin这个顶层 scope,它是整个文件的默认作用域,影响背景色和基础字体样式
真正卡住人的从来不是装不上,而是装上后发现中文乱、补全没、颜色不对——这些问题都发生在「语法定义」和「配色方案」的交界处,而不是某个开关一开就完事。动手前先 Ctrl+Alt+Shift+P 看一眼真实 scope,比瞎调十次颜色更快。











