sublime text真“无感知”分屏需用set_layout手动控制布局、focus_group锁定焦点、自定义快捷键避免干扰、clone_file同步视图而非新建文件,且不重排/不跳转/不新建空白页/不打断上下文。

分屏快捷键在 Sublime Text 里根本不是“无感知”的
Sublime Text 默认的分屏操作(比如 Ctrl+Alt+1 / Ctrl+Alt+2)会强制重排所有已打开的标签页,焦点跳转、布局重置、甚至可能关闭当前文件——这不是“无感知”,是“强干扰”。真要接近无感知,得绕过默认行为,用更底层的 API 控制。
用 set_layout 手动控制分屏结构
Sublime 的分屏本质是 layout(布局)变更,set_layout 是唯一能精准控制行列划分、不触发自动重排的命令。它接受一个字典描述行列数和每个区域的像素坐标,关键在于:只改 layout,不碰 view、不 reload 文件、不移动焦点。
-
set_layout必须配合focus_group使用,否则光标可能卡在错误 pane - 想“无感知”,就得保持当前 view 在原 group 不动,只新增 group —— 比如从单列变两列:
{"cols": [0.0, 0.5, 1.0], "rows": [0.0, 1.0], "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]} - 注意
cols和rows是归一化比例(0.0 到 1.0),不是像素值;cells中每个[left, top, right, bottom]对应一个 pane 的坐标范围
绑定自定义快捷键避免覆盖默认行为
别直接改 Ctrl+Alt+2,那会破坏原有逻辑。新建一个快捷键组合(比如 Ctrl+Shift+D),绑定到你自己的命令里,里面先读当前 layout,再插入新 pane,最后用 window.focus_view(view) 锁定焦点。
- 在
Preferences → Key Bindings里加一行:{"keys": ["ctrl+shift+d"], "command": "split_into_two_columns"} - 对应的插件命令必须用 Python 写(放在
Packages/User/下),核心是调用window.set_layout(...)+window.focus_group(...) - 如果当前已是双列,再按一次该快捷键应还原为单列,而不是叠成三列——得先
window.layout()查询当前结构再决策
为什么 clone_file 比 new_file 更接近“无感知”
分屏后常要同步看同一文件。用 clone_file 命令复制当前 view 到新 group,比手动 Ctrl+P 找文件快得多,且不会丢失光标位置、折叠状态、书签。但注意:clone_file 复制的是 view,不是 buffer —— 编辑任一 clone 都实时同步内容,这是优势也是坑。
- 如果只想看不编辑,用
view.set_read_only(True)锁定 clone - 某些插件(如 GitGutter)可能在 clone view 里重复渲染图标,需检查插件是否监听了
on_activated而非on_load -
clone_file后的 view 默认没有文件路径显示(显示为 “untitled”),可用view.assign_syntax("Packages/.../xxx.sublime-syntax")补回语法高亮











