使用 vscode-pintia 插件高效地在 VS Code 刷题
插件概述
用户可在 VS Code 中练习拼题 A 编程类习题(不支持文件题、私人题集中的选择、填空题等)
- 代码的开源仓库:https://github.com/jinzcdev/vscode-pintia
- 插件首页地址:https://marketplace.visualstudio.com/items?itemName=jinzcdev.vscode-pintia
更新日志
详细更新日志,查看仓库的 CHANGELOG 。
[0.8.2 紧急热修复] - 2025/03/21
拼题 A 接口变更导致用户登录认证失败,请升级到最新版本(v0.8.2)后重启 VS Code。
[0.8.0] - 2025/03/15
功能更新
-
题目预览
- 增加更多操作按钮,收录不常用的操作
- 增加复制题目原内容的功能
-
文件命名(插件配置项 Issue #14)
- 支持自定义文件名模板,包括题目 ID、题目标签、题目名称、题目集 ID 等
- 支持使用拼音转换中文题目名称
- 支持自定义题目集文件夹名称
-
编辑器快捷键
- 在 PTA 源文件中新增提交答案(
Cmd/Ctrl+Shift+J
)与测试代码(Cmd/Ctrl+Shift+K
)的快捷键 - 在题目预览页增加 开始编程(
Cmd/Ctrl+Enter
)快捷键
- 在 PTA 源文件中新增提交答案(
[v0.7.1] 2024/12/28
本次增加了多项更新,具体如下:
功能更新
- 支持 《我的问题集》(Issue #4)
- 新增 Cookie 登录方式,用户可使用 key 为 PTASession 的 Cookie 登录
- 支持 自动检测 题目中的输入样例并快速提交测试
- 题目预览页增加 题目刷新、查看上次提交 按钮
- 更新并优化题目预览页、提交页、测试页的样式
- 增加题目查看历史 View
- 支持查看题目时,自动创建源文件
- 题目预览中显示题目代码性能要求
- 优化了新建源代码时头部注释的格式
- 新增清除题目查看历史和收藏题目的命令
- 支持中英文语言切换
问题修复
- 自动创建没有对应考试的题目集(Issue #6)
- 自动过滤编程题以外的题目集
- 修复提交页当源代码中存在 markdown 笔记时的样式错误问题
[v0.3.1] 2023/01/24
新增功能
- 添加插件演练以指导如何使用该插件,在命令面板中键入 Get Started: Open Walkthroughs…
- 增加题目搜索功能,及其对应命令 Pintia: Search Problem
- 根据 VS Code 的使用语言自动切换中英文
- 在代码编辑器中添加 Preview 快捷命令以重新预览题目
- 添加 Java 语言的常用模板(BufferReader、Scanner)
- 在题目预览中,增加搜索引擎与题解入口以快速搜索题目
更新与修复
- 修复提交测试时的错误
- 添加自定义样例时,由 Line Comment 改为 Block Comment
插件详细功能介绍
0. 核心功能
- 使用微信二维码扫码登录或 Cookie 登录拼题 A
- 支持 公共题库 与 我的题目集(需要读者验证码的题集会被标记上锁符号)
- 在 VS Code 中 预览/编程/测试 题目
- 自动检测题目题干中的输入样例作为测试用例
- 向拼题 A 提交或测试你的 Solution
- 在编辑区中快速添加 多个自定义测试样例
- 自动签到拼题 A 教育超市
1. 插件安装
拼题 A 插件安装
2. 使用介绍
2.1. 登录/登出
点击「登录拼题 A」进行登录,支持以下两种登录方式:
- 微信二维码登录
- Cookie 登录
2.2. 预览问题与编码
- 点击问题,即可查看问题描述
- 点击右下角的 开始编程 进行解题
注:插件中默认选择的语言是C++,可以在设置中或者使用命令面板键入 Pintia: Change Default Language 来快速修改默认使用的编程语言。部分题集(如教材类题集)指定了可用的编程语言,此时创建源文件则会以规定使用的语言为准,如果指定可用的编程语言有多个(如 ZOJ Problem Set 题集),则会弹出提示以重新选择想用的编程语言。
每道题目的源文件会被创建到用户指定的工作区目录,首次创建源文件时,需要用户选择所用的工作区(默认推荐的工作区目录为 $HOME/.pintia/codes ),或者也可在 VS Code 的设置中修改 pintia.workspaceFolder 配置项。
2.3. 编辑器快捷键
- 拼题 A 插件暂支持 3 个编辑器快捷键
- 提交/Submit:向 Pintia 提交你的答案
- 测试/Test:用自定义的测试样例或默认样例测试你的答案
- 预览题目/Preview: 预览并刷新题目
点击 Test 测试代码时,会自动获取题目中可用的测试样例(并不是问题描述中的输入输出样例)作为默认测试样例,若无默认测试样例插件会予以提示。
注:默认的测试样例指的是,Pintia 能提供答案的测试样例。使用自定义的测试样例测试代码时,Pintia 只会返回你的代码对测试样例的输出而不会返回真实的答案。而使用默认的测试样例时,Pintia 会提供正确的输出予以对照(但实际上部分题目即使提供了默认测样样例,Pintia 也不会返回正确输出)。
2.4. 自定义测试样例
自定义测试样例是为了方便快速测试自己的代码,你可以直接在代码的下方将自定义的测试样例放置在@pintia test=start 和@pintia test=end 之间(输入 ptatest 可快速添加),并点击 Test custom sample 来快速测试。自定义测试样例可添加多个。
注:在代码编辑区点击 Submit 或者 Test 提交代码时,只有包裹在@pintia code=start 与@pintia code=end 中的代码会被提交,区域外的文本内容不会被提交到 Pintia,因此这有个小 trick,即提交函数题时,可以在源文件中添加完整的代码供本地测试,而将所要提交的函数段代码包裹在上述标识符中。如果误删了上述标识,可在编辑区中输入 ptacode 来快速添加。
3. 命令面板
为了快速使用相关功能,可以在 VS Code 中使用 Ctrl+Shift+P (in Windows) 或 Command+Shift+P (in Mac) 打开命令面板并输入 pta 以快速使用插件的相关命令。可用的命令如下:
命令 | 描述 | 备注 |
---|---|---|
pintia.clearCache | 清除题目缓存 | 发现题目集信息与官方不同时可使用该命令 |
pintia.signIn | 登录 | |
pintia.signOut | 退出登录 | |
pintia.changeDefaultLanguage | 修改默认编程语言 | 可设置拼题 A 官方所支持的所有语言 |
pintia.changeWorkspaceFolder | 修改工作区文件夹 | |
pintia.checkIn | 签到拼题 A 教育商店 | 建议在配置项中设置成自动签到 |
pintia.reportIssue | 问题反馈 | |
pintia.searchProblem | 搜索题目 | 默认忽略 ZOJ 题目集,可在配置项中修改 |
pintia.refreshProblemSearchIndex | 刷新题目搜索索引 | 为了加快数据加载速度,数据被缓存在本地,如果发现数题目缺失可刷新 |
pintia.openWorkspace | 打开 Pintia 工作区 | |
pintia.clearViewedProblems | 清除题目预览历史 | |
pintia.clearFavoriteProblems | 清除我的收藏夹 |
4. 插件配置项
设置名称 | 描述 | 默认值 |
---|---|---|
pintia.workspaceFolder | 工作区文件夹的路径(存储题目源文件)。 | “” |
pintia.previewProblem.openAndCodeIt | 指定是否在预览题目时自动打开代码编辑器,开启时建议不要将 #pintia.previewProblem.defaultOpenedMethod# 设置为 总是询问。 | false |
pintia.previewProblem.defaultOpenedMethod | 指定打开代码编辑器的方式,默认为 总是询问。 | 总是询问 |
pintia.paging.pageSize | 指定当题目集较大时候,是否对题目列表分页。pageSize 为 0 表示不分页。 | 100 |
pintia.codeColorTheme | 指定代码着色主题。 | atom-one |
pintia.showLocked | 指定是否显示未解锁的题集(一些教材题目集)。 | true |
pintia.enableStatusBar | 指定是否显示 PTA 状态栏。 | true |
pintia.autoCheckIn | 指定是否在激活插件时自动签到 PTA 教育商店。 | true |
pintia.defaultLanguage | 设置答题时默认使用的编程语言。 | C++ (g++) |
pintia.editor.shortcuts | 自定义编码时的编辑器快捷键。 | [“Submit”,“Test”, “Preview”] |
pintia.searchIndex.ignoreZOJ | 指定搜索题目时,是否忽略 ZOJ Problem Set 题集。 | true |
pintia.searchIndex.ignoreLockedProblemSets | 指定搜索题目时,是否忽略 未被解锁的 题集。 | true |
pintia.searchIndex.autoRefresh | 指定是否在激活插件时自动刷新题目搜索索引(不推荐设置,因为固定题集更新频率较低且获取索引较耗时)。 | false |
pintia.autoCreateProblemSetFolder | 指定创建题目源文件时是否自动创建其习题集文件夹并将源代码文件放入相应的文件夹中。 | true |
pintia.problemHistoryListSize | 指定题目预览历史列表的大小。 | 200 |
5. 维护计划
- 支持本地查看题解
- 增加习题考点标签