Sublime的PageUp/PageDown按视口高度滚动而非固定行数,是设计特性;需固定行数可绑定scroll_lines命令,但会失去响应式优势;光标不移动的真翻页需用scroll_lines_fixed插件。

PageUp/PageDown 为什么翻得不“整页”?
Sublime 的 page_up 和 page_down 命令不是按固定行数滚动,而是按当前视口(viewport)高度滚动——窗口拉高,一页就变多;字体调大,一页反而变少。这不是 bug,是设计如此。你改不了 page_scroll_lines 这类配置项,Settings 里搜不到,也不存在。
想让 PageUp/PageDown 滚固定行数?绑定 scroll_lines 就行
如果真需要每次按 page_down 都向下滚 25 行(比如看日志或长配置),就得覆盖默认行为:
- 打开
Preferences → Key Bindings - 在右侧用户配置中添加这两条(注意负号方向):
[{"keys": ["page_up"], "command": "scroll_lines", "args": {"amount": 25}}, {"keys": ["page_down"], "command": "scroll_lines", "args": {"amount": -25}}] -
amount是负数表示向下滚动,值越大单次滚动越远 - 此绑定只影响编辑区,侧边栏、控制台、命令面板不受影响
⚠️ 代价是失去响应式优势:窗口缩小时,固定 25 行可能滚过头甚至跳到不可见区域。
Ctrl+U / Ctrl+D 在 Vim 模式下失效?别碰 Vintage 插件默认键
Sublime 原生不支持 ctrl+u / ctrl+d 翻页,Vintage(Vim 模式)插件才提供这个语义。但升级后常失效,原因通常是:
- Vintage 没启用 normal 模式(光标不在 normal 模式下,
ctrl+u当作普通输入处理) - 其他插件劫持了
ctrl+u(如 AutoFileName 或某些 snippet 工具) - 系统级冲突:Windows/Linux 下部分输入法会拦截
ctrl+u
解决办法不是硬修插件,而是用原生命令替代:scroll_lines_fixed 插件 + 自定义 key binding,比依赖 Vintage 更稳。
不移动光标也能翻页?scroll_lines_fixed 是唯一解
原生 scroll_lines 有个坑:滚动到边界时会把光标拖走。而 scroll_lines_fixed 插件能保持光标不动,只动视口——这才是真正的“翻页”体验。
- 先创建插件:
Tools → Developer → New Plugin,保存为ScrollLinesFixed.py - 绑定快捷键(例如用
ctrl+up向上翻半页):[{"keys": ["ctrl+up"], "command": "scroll_lines_fixed", "args": {"by": "pages", "amount": 0.5}}, {"keys": ["ctrl+down"], "command": "scroll_lines_fixed", "args": {"by": "pages", "amount": -0.5}}] - 插件代码里
by: "pages"支持小数,0.5就是半页,比整页更可控
真正麻烦的不是怎么设,而是很多人根本没意识到:翻页 ≠ 移动光标。一旦你习惯光标钉在原地、只滚动视口,就再也回不去拖着光标满屏跑了。

















