shift + end 是唯一稳定选中单行行尾的方式,不依赖语言模式、插件、缩进或软换行,光标在哪就从那选到本行最后一个可见字符(不含换行符),全平台一致。

Shift + End 是唯一稳定选中单行行尾的方式
它不依赖语言模式、不需插件、不看缩进或软换行,光标在哪,就从那选到本行最后一个可见字符(不含换行符)。这是 Sublime 原生行为,Windows/Linux/macOS 全平台一致。
常见错误现象:
- 单独按 End 只移动光标,不选中;必须按住 Shift 再按 End
- 行被软换行(wrap)截断时,Shift + End 仍选到物理行尾,不是“屏幕看到的末尾”
- 光标已在行尾(比如刚按过 End),再按 Shift + End 选区为空——这是正常表现,不是失效
多行不规则行尾选中,得先确保选区含换行符
Ctrl + Shift + L 不是“加光标”,而是把已有选区按 \n 或 \r\n 拆成每行一个光标。如果鼠标拖选没覆盖到换行符,它就只当你是单行操作。
安全做法:
- 先按 Ctrl + L(选中当前行)
- 再按住 Shift + ↓ 向下扩展,直到所有目标行都被高亮(包括空行)
- 最后按 Ctrl + Shift + L,光标会落在每行末尾前
- 若想统一加前缀,按一次 Home 让所有光标跳到各行缩进后起始位,再按一次 Home 跳过缩进到绝对行首
矩形列选(Alt+拖拽)不适合不规则行尾
Alt + 拖拽(Win/Linux)或 Option + 拖拽(macOS)生成的是固定列宽的矩形选区。如果某行比矩形窄,光标会自动落到该行末尾,但无法保证“所有光标都停在各自行尾”——它只对齐列,不感知行边界。
更关键的是:
- 列选完必须立刻按 Ctrl + Shift + L 把矩形拆成多光标,否则输入只作用于首行
- 如果某行实际内容短于列选宽度,光标会落在行尾空白处,输内容会插入空格中间,破坏结构
- 行尾有空格时,列选容易把空格也框进去,后续 Ctrl + Shift + L 会让光标卡在空格里,而不是紧贴文字末尾
用正则批量定位行尾更可控,但要避开 $ 的陷阱
打开查找面板(Ctrl + F),开启正则(点 * 图标),输入 $ 并点 Find All,确实能匹配所有行尾位置。但注意:
- $ 默认匹配行尾(\n 前),不匹配文件末尾(EOF)
- 如果最后一行没换行符,$ 就不会匹配它——得手动补一个或改用 (? 等变体<br>- <code>Find All 后光标在每行末尾,但若某行是空行,光标会落在空行开头而非结尾,和预期不符
- 正则匹配后不能直接输入,得先按 Ctrl + Shift + L 才能多光标编辑,否则只在第一个匹配点生效
真正难处理的,是那些行尾混着空格、制表符、甚至不可见 BOM 字符的情况——这时 Shift + End 依然可靠,而正则或列选反而容易漏掉或错位。











