# Jupyter 快捷键对照调研(dsh-notebook-v2) > 调研日期:2026-11-04 · 只读调研,未修改任何生产代码 > 对象:`dsh-notebook-v2/lib/client.js`(6084 行,revision `16df0aab`) > 方法:全文 grep(`keymap` / `key:` / `keydown` / `Mod-` / `Escape` / `matchKey` / `keyFor`)+ 逐段精读 + 官方/半官方文档核对 > 说明:行号以当前 `lib/client.js` 为准;vendor 说明:`lib/cm-vendor.js` 是 esbuild 压缩产物(符号名已重命名),只能按**键位字符串**核对 --- ## 0. 一句话结论 + P0 缺口清单 **一句话结论**:插件把「运行三连 + 编辑态」这套 VS Code 手感做完了(`Shift-Enter` / `Ctrl-Enter` / `Alt-Enter` / `Esc` / `Enter` / `↑↓` / `Delete` / `Ctrl-S`(仅编辑器内)),但**完全没有「命令模式(command mode)」这一层**——Jupyter 用户肌肉记忆里 `A`/`B`/`DD`/`Z`/`Y`/`M`/`R`/`Ctrl-A`/`Shift-↑↓` 整组无处可挂,且删格不可撤销。 **P0 缺口(7 条,按实现顺序)** | # | 缺口 | 现状证据 | 为什么是 P0 | |---|---|---|---| | 1 | **命令模式底座缺失**(无 mode 状态、无 `data-nb2-mode`、无命令态选中态可视化) | 全文件无 `commandMode`/`data-nb2-mode`;`selected` 是**单个 id**(state 在 `client.js:4115`,派生下标 `4276`),`CellView` 只收 `selected` 布尔(`client.js:3549`) | 下面 2–5 全部依赖它;不先做等于逐条打补丁 | | 2 | `A` / `B` 插入上/下一格 | 只有工具条「+代码/+MD/+SH」都在**末尾**追加(`client.js:5390-5392`);`addCell` 支持 `after`/`index`(`client.js:4229-4252`,`docs/api-nb2.md:186`)但没有任何键位 | Jupyter 最高频的造格动作;现在必须离开键盘去点按钮 | | 3 | `DD` 删除 + `Z` 撤销删除 | 删除只有 `Delete`/`Backspace`(`client.js:3637-3641`)与 `⋯` 菜单(`client.js:5434-5449`),**删完即不可恢复**(`cell/delete` 无 undo 路由,`docs/api-nb2.md:27`) | Jupyter 里 `Z` 是删错格的唯一后悔药;现在误删一格 = 重新敲一遍代码 | | 4 | `Y` / `M` / `R` 类型切换 | 只有下拉框 `