Chapter 09 / 10

快捷键与高效操作

掌握命令模式与编辑模式的完整快捷键清单,以及 Tab 补全、文档查看等加速技巧

双模式快捷键体系

Jupyter 的快捷键分为两套,取决于当前处于哪种模式:

进入命令模式

Esc,单元格变为蓝色边框。
此时键盘用于操作单元格结构。

进入编辑模式

Enter 或双击单元格,变为绿色边框。
此时键盘用于输入内容。

INFO 在 Help → Keyboard Shortcuts 菜单中可以查看完整的快捷键列表,也可以按 H(命令模式下)直接打开。

运行单元格快捷键

这三个快捷键用得最频繁,务必熟记:

Shift + Enter 运行当前单元格,跳到下一个(最常用)
Ctrl + Enter 运行当前单元格,停在原位
Alt + Enter 运行当前单元格,在下方插入新单元格
Ctrl/⌘ + S 保存 Notebook

命令模式快捷键

先按 Esc 进入命令模式:

单元格操作

A在上方插入新单元格(Above)
B在下方插入新单元格(Below)
D, D删除当前单元格(按两次 D)
Z撤销删除
X剪切当前单元格
C复制当前单元格
V在下方粘贴
Shift + V在上方粘贴
Ctrl+↑ / ↓上移/下移当前单元格
Shift + M合并选中的单元格

单元格类型切换

Y切换为 Code 类型
M切换为 Markdown 类型
R切换为 Raw 类型
1-6切换为对应级别的 Markdown 标题

导航与选择

↑ / K选中上一个单元格
↓ / J选中下一个单元格
Shift + ↑/↓多选单元格
Ctrl + Home跳到第一个单元格
Ctrl + End跳到最后一个单元格
H显示快捷键帮助

Kernel 操作

I, I中断 Kernel(按两次 I)
0, 0重启 Kernel(按两次 0)

编辑模式快捷键

Enter 进入编辑模式后可用:

Tab代码自动补全(或缩进)
Shift + Tab显示函数文档(弹出 Docstring)
Ctrl + ]增加缩进
Ctrl + [减少缩进
Ctrl + /注释/取消注释当前行
Ctrl + Z撤销
Ctrl + Y重做
Ctrl + D删除当前行
Ctrl + A全选单元格内容
Ctrl + Shift + -在光标处分割单元格

Tab 自动补全

在编辑模式下按 Tab 触发补全:

# 函数名补全
np.linTab
# → 显示:linspace, linalg, load, loadtxt...

# 模块属性补全
pd.DataFrame.Tab
# → 显示 DataFrame 的所有方法和属性

# 文件路径补全
pd.read_csv("data/Tab
# → 列出 data/ 目录下的文件

查看文档(Shift + Tab)

将光标放在函数名内,按 Shift+Tab 查看其文档字符串:

# 光标在 read_csv 内,按 Shift+Tab
pd.read_csv(  ← 光标在这里

会弹出一个浮层显示函数签名和说明,按 Shift+Tab 两次展开完整文档,按 Shift+Tab 四次在页面底部固定显示。

也可以在函数后加 ???

pd.read_csv?   # 显示 docstring
pd.read_csv??  # 显示源代码

查找与替换

Ctrl+H(或 Edit → Find & Replace)打开查找替换面板,可以在整个 Notebook 中搜索和替换文本。

折叠输出

单击单元格左侧的竖线(输出区域的左边框)可以折叠/展开输出。对于产生大量输出的单元格很有用。

行号显示

在命令模式下按 L,或 View → Toggle Line Numbers,可以显示/隐藏单元格行号,方便调试。

代码编写效率技巧

# 1. 多行编辑(按住 Alt,拖动鼠标)— 仅 JupyterLab
x1 = 1   # 多行同时编辑时很有用
x2 = 2
x3 = 3

# 2. 用 ? 快速查看文档(比查网页更快)
import numpy as np
np.sort?   # 查看 np.sort 的文档字符串
# 在页面底部显示完整文档

# 3. 用 ?? 查看函数源代码
np.cumsum??  # 显示 numpy.cumsum 的实际 Python 源码(部分函数是 C 实现,会显示文档)

# 4. 查看对象的所有属性方法
df = pd.DataFrame()
df.T[Tab]  # 按 Tab 看所有 T 开头的方法

调试 Notebook 的技巧

# 1. 使用 %debug 进入交互式调试器(在报错后立即运行)
def buggy_function(x):
    return x / 0

buggy_function(5)  # ZeroDivisionError

# 在下一个 cell 运行:
%debug  # 进入 pdb 调试器,可以查看变量、逐步执行

# 2. 打印中间状态(最简单有效的调试方式)
for i, item in enumerate(data):
    if i < 3:  # 只打印前 3 条,避免输出过多
        print(f"[{i}] type={type(item).__name__}, value={item!r}")

# 3. 用 assert 检查数据假设
assert df.shape[0] > 0, "数据集为空!"
assert 'user_id' in df.columns, "缺少 user_id 列"
assert df['age'].between(0, 150).all(), "年龄数据异常"
%pdb 自动调试模式

运行 %pdb on 后,任何未捕获的异常都会自动触发 pdb 调试器,无需手动运行 %debug。在调试器中常用命令:p variable(打印变量)、l(列出周围代码)、n(下一行)、q(退出调试器)。调试完成后运行 %pdb off 关闭自动模式。

批量执行技巧

# 从菜单:Run → Run All Cells
# 从菜单:Run → Run All Above(运行当前单元格以上的所有单元格)
# 从菜单:Run → Run All Below(运行当前单元格及以下)

# 从代码中控制执行流程(不推荐,复杂性高)
raise SystemExit()  # 在某处停止执行

高效 Jupyter 工作流的完整体系

命令模式 vs 编辑模式
Jupyter 有两个核心模式:命令模式(蓝色边框)用于单元格级别的操作(插入、删除、移动、类型切换);编辑模式(绿色边框)用于单元格内容的编辑。Esc 切换到命令模式,Enter 切换到编辑模式。理解这两个模式的切换,是 Jupyter 快捷键体系的基础——同一个按键在两个模式下有完全不同的含义(如 A 在命令模式是"上方插入",在编辑模式是输入字母 a)。
Tab 补全的智能程度
Jupyter 的 Tab 补全不仅补全变量名和函数名,还支持:文件路径补全(在字符串中输入路径后按 Tab)、字典键补全(d['k 按 Tab 列出所有键)、模块属性补全(import numpy as np; np. 按 Tab)。JupyterLab 的补全质量优于经典 Notebook,支持类型推断辅助补全。
文档查看快捷键的选择
Shift+Tab(1次):浮层显示函数签名(快速确认参数顺序);Shift+Tab(2次):展开完整 docstring(查看所有参数说明);函数名后加 ?:在 pager 区域显示文档;函数名后加 ??:显示源代码(开源库调试的利器)。养成在调用不熟悉的函数前先按 Shift+Tab 查看签名的习惯,减少 API 查错时间。
常见快捷键误操作

本章小结

本章核心要点