Sublime需借助Text Pastry实现按行号生成差异化测试用例:先用Ctrl+Shift+L拆光标定位,再通过Text Pastry: Insert Text粘贴名称列表或Insert Numbers插入编号(如001格式),不可依赖正则替换或手动多光标输入。

Sublime 本身不支持“按行号生成不同测试用例”,多光标默认是同步输入——你打 test_,所有光标都会插同一串。真要快速生成带编号、参数、断言的多行测试,得绕过“纯多光标打字”这个误区,用组合操作替代。
先用多光标 + Ctrl+Shift+L 拆出位置,再用 Text Pastry 插入差异化内容
这是最稳的路径:多光标只负责“定位”,真正生成差异内容交给 Text Pastry。它能严格按行顺序插入不同字符串或数字,且不依赖光标是否对齐、有没有缩进。
- 写好模板行(比如空行或
def test_placeholder():),复制 N 行 - 选中这 N 行 →
Ctrl+Shift+L拆成 N 个光标(每行一个) - 再按
Ctrl+Shift+P→ 输入Text Pastry: Insert Text→ 粘贴你准备好的测试名列表(每行一个,如test_user_login、test_user_logout、test_user_profile) - 回车,它会从第一行光标开始,一一对应插入,不跳行、不循环、不报错
用 Text Pastry: Insert Numbers 快速补编号,但要注意前导零格式
如果测试名有规律(如 test_case_1、test_case_2…),直接用数字插入比手动粘贴更快,但格式必须提前定好。
- 选中目标行 →
Ctrl+Shift+P→Text Pastry: Insert Numbers - 输
1:生成 1, 2, 3…;输001:生成 001, 002, 003…;输100:从 100 开始递增 - 它不会自动加后缀或拼接字符串,所以得先在光标前打好固定部分,比如先输入
test_case_,再把光标放在下划线后、数字前,再调用数字插入 - 别输
1,2,3或1-5——它只认单个起始值,不解析范围表达式
别用正则替换模拟“每行不同”,Sublime 的 ^ 和 $ 不带行号上下文
有人试过写正则 ^.*$ 配替换为 test_${1},指望它按行索引自增——这在 Sublime 正则里根本不可行。它的 $1 只捕获组内容,不是行号。
-
^匹配的是每行开头,不是“第1行开头”;$匹配每行结尾,不是“第5行结尾” - 没有
\n计数器,也没有${line_number}这类变量支持 - 强行用
(? 这类断言不仅无效,还会让替换面板卡死或静默失败
临时改一行代码就跑多个测试?别手敲,用 mini 插件触发已打开文件
如果你已经打开了 test_a.py、test_b.py、test_c.py,想一键跑全部,多光标毫无用处——此时该用 Python 插件遍历视图,而不是在编辑区里折腾光标。
- 新建
Packages/User/run_open_tests.py,贴入官方验证过的代码(含self.window.views()过滤*test.py) - 保存后按
Ctrl+Shift+P→ 输入Run Open Tests,它会自动收集所有已打开的测试文件路径,传给pytest - 这比你在 10 行里手动敲 10 次
pytest test_xxx.py更可靠,也避免了漏掉某行、多敲一个空格导致命令失败
真正卡住人的地方,从来不是“怎么选中多行”,而是误以为多光标能承载逻辑差异。Sublime 的多光标是“位置锚点”,不是“数据生成器”。把定位和生成拆开,用 Text Pastry 做后者,才是不翻车的关键。

















