VSCode中Jupyter Notebook默认不换行是因语言专属设置覆盖全局配置,需分别为jupyter和markdown语言模式单独设置"editor.wordWrap":"on"及"editor.wrappingIndent":"indent",输出区还需配"jupyter.textOutputLineLimit":0。

VSCode 的 Jupyter 插件默认不启用自动换行,不是 bug,是语言模式的独立设置覆盖了全局配置。 即使你在用户 settings.json 里写了 "editor.wordWrap": "on",打开 .ipynb 文件时仍可能不换行——因为 Jupyter 模式有自己的 language-specific 设置,优先级更高。
为什么 Jupyter Notebook 单元格输出/代码不换行
根本原因是 VSCode 对 jupyter 语言类型(包括 python 内核下的代码单元和 markdown 单元)启用了单独的语言设置,默认为 "editor.wordWrap": "off"。这和你打开一个 .py 或 .md 文件时的行为逻辑一致,但容易被忽略。
- 右下角状态栏点击语言标识(显示 “Jupyter” 或 “Python”),选择 “Configure 'Jupyter' language based settings”
- 检查打开的 settings 片段里是否有
"editor.wordWrap": "off"—— 大概率有 - 输出区域(如
print()结果、长 DataFrame、JSON 响应)也受此控制,不是“输出面板”单独的问题
如何让 Jupyter 代码单元和 Markdown 单元都换行
必须显式在 Jupyter 专属设置中开启,推荐直接编辑该语言设置:
- 打开命令面板:
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS) - 输入并选择
Preferences: Configure Language Specific Settings... - 选
jupyter→ 在弹出的 JSON 片段中添加:
{
"editor.wordWrap": "on",
"editor.wrappingIndent": "indent"
}
加 "editor.wrappingIndent": "indent" 是关键:否则换行后第二行会顶到行首,破坏缩进结构(比如链式调用、嵌套字典)。这个配置只影响视觉,不插入真实换行符,不影响复制、运行或 Git 提交。
Jupyter 输出长文本(如日志、DataFrame、JSON)怎么换行
输出内容本身不受 editor.wordWrap 控制,但 VSCode 的 Jupyter 输出渲染器支持软折行,前提是:
- 确保已启用
"jupyter.textOutputLineLimit": 0(取消截断,避免内容被省略) - 在 Jupyter 语言设置中同时设
"editor.wordWrap": "on",它会作用于输出渲染区的文本显示 - 超长无空格内容(如 base64、URL、大数字)仍可能硬切;可选配
"editor.wordWrapBreakBeforeCharacters": ".,;?!"增加断点,但一般不需要
注意:终端(Terminal)、调试控制台(Debug Console)等区域完全不响应 editor.wordWrap,Jupyter 输出区是少数能生效的非编辑器区域之一。
别漏掉 Markdown 单元格的换行设置
Jupyter 里的 markdown 单元格属于 markdown 语言模式,不是 jupyter 模式。如果你写长表格或段落不换行,要单独配:
- 点击右下角 “Markdown”,选 “Configure 'Markdown' language based settings”
- 添加同样两行:
"editor.wordWrap": "on"和"editor.wrappingIndent": "indent" - 否则即使代码单元换行了,Markdown 单元格依然横向滚动
最易被忽略的是:一个 notebook 文件里混着三种上下文(代码 / markdown / 输出),它们各自走不同语言设置路径,不能靠一个全局配置一劳永逸。


















