esc + f 是 jupyter notebook 中唯一支持跨单元格查找替换的原生快捷键,仅作用于代码单元格,不包含 markdown 和输出内容,支持区分大小写、正则表达式及批量替换。

Esc + F 是最直接的查找替换入口
不是 Ctrl+F,也不是菜单里点“Edit → Find and Replace”,Jupyter 的原生查找替换默认绑定在 Esc + F。这个快捷键只作用于当前 notebook 的所有代码单元格(code 类型),不包含 Markdown 单元格或输出内容——这点常被误以为“搜不到”,其实是模式不对。
触发后会弹出右侧浮动面板,支持:
- 输入关键词后实时高亮匹配项(逐单元格扫描)
- 勾选 Match case 区分大小写
- 勾选 Regex 启用正则表达式(比如搜
df\.groupby\(\)时需转义) - 点击
Replace替换单个,Replace All批量替换全部匹配项
Ctrl+F 只能搜当前 cell,且不支持替换
在编辑模式(绿色边框)下按 Ctrl+F(macOS 是 Cmd+F),只会打开浏览器原生的页面内搜索,仅限当前正在编辑的那个 cell 的可见文本。它无法跨单元格、不能替换、不识别语法结构,搜 import numpy as np 可能漏掉换行写的 import numpy\nas np。
所以别依赖它做重构类操作,尤其变量重命名或 API 更新时,Esc + F 才是唯一可靠路径。
全局搜索含输出和 Markdown:用命令面板 + Search
如果真要搜输出结果里的字符串(比如报错信息、打印日志),或者 Markdown 里的标题/注释,Esc + F 不管用。这时得靠 Jupyter Notebook 7+ 的增强搜索能力:
- 先按
Ctrl + Shift + P(macOSCmd + Shift + P)调出命令面板 - 输入
search,选择Find in Notebook或Find and Replace in Notebook - 该功能会索引所有内容:代码、Markdown、甚至输出区域的纯文本(不含图像、表格渲染后的 HTML 结构)
注意:这个搜索是全文本匹配,不支持正则,但能跨 cell 覆盖更广范围。
批量替换变量名时容易踩的坑
用 Esc + F 做变量重命名(比如把 df_old 改成 df_new),必须小心以下三点:
- 确保没选中任何 cell——否则搜索范围会被限制在选中的单元格内
- 关闭 Regex,否则
_可能被当正则元字符处理 - 避免只输
df这种短词,容易误替df_old里的df和pd.DataFrame里的df;建议输完整标识符,如df_old
复杂替换建议先导出为 .py 文件,在 VS Code 里用项目级搜索替换验证逻辑,再粘回去——Jupyter 的替换不提供预览,改错就得手动撤销(Esc + Z)。











