sublime原生不支持scroll_past_end配置,st4已移除该字段识别;唯一可靠方案是安装scrollpastend插件,它通过hook绘制逻辑动态扩展canvas高度实现滚动到底部后继续拖动。

Sublime 原生不支持 scroll_past_end 配置
直接在用户设置里加 "scroll_past_end": true 完全无效——这个键名不在 Sublime 的配置白名单中,解析时会被静默丢弃。网上大量 2015 年左右的旧教程仍沿用该写法,但 ST4(2021 年起)已彻底移除对该字段的识别。你保存后重启、重载插件、甚至重装,都不会有任何变化。
真正生效的是 ScrollPastEnd 插件,不是配置项
目前唯一稳定、被广泛验证的方式是安装 ScrollPastEnd 插件。它不依赖任何配置,默认启用,原理是在渲染层模拟底部空白缓冲区,而非修改文件内容或插入真实空行。
- 通过
Ctrl+Shift+P→ 输入Install Package→ 搜索并安装ScrollPastEnd - 安装后无需重启,也无需改任何 JSON 设置
- 滚动到底部后继续拖动滚动条或滚轮,视图会留出可交互的空白区域,光标可定位到该区域任意位置
- Git diff、
TrailingSpaces等插件不受影响,因为文件末尾没有新增换行符
别用“空行 + word_wrap”凑合,坑多且不可靠
有人尝试手动加 20 行空行再开 word_wrap 来模拟效果,这会导致实际文件被污染:
- 保存后 Git 会记录多余空行,
git diff显示异常 -
TrailingSpaces、AutoSetSyntax等插件可能误报或行为错乱 -
word_wrap关闭时,空行高度塌缩,滚动体验断层 - 无法响应
view.set_viewport_position()调用——底层 viewport 边界限制无法绕过
为什么不能自己写插件硬推 viewport?
试图用 view.set_viewport_position((x, y)) 把视图强行拉到底部之外,Sublime 会立刻把它 clamp 回合法范围(即最后一行的底部坐标)。这不是权限问题,而是渲染引擎根本不允许 viewport 超出文档逻辑边界。所有基于 set_viewport_position 的“自制 scroll_past_end”方案,在 ST4 上均失效。
ScrollPastEnd 插件之所以能工作,是因为它 hook 了底层绘制逻辑,在 on_draw 阶段动态扩展 canvas 高度,而不是移动 viewport——这是唯一可行路径,也是它至今没被官方替代的原因。











