ctrl+home/ctrl+end 是最稳的行首行尾跳转方式,精准定位逻辑行首尾,不受软换行干扰;ctrl+shift+home 用于从光标选中至行首;ctrl+shift+l 配合 home 才能实现多行行首批量编辑。

Ctrl+Home / Ctrl+End 是最稳的行首行尾跳转
Windows/Linux 下直接按 Ctrl+Home 光标跳到当前行最开头(含缩进空格),Ctrl+End 跳到当前行最后一个非空白字符后——注意,不是换行符前,而是“逻辑行尾”。这个组合键不依赖选区、不触发多光标、不被插件轻易劫持,适合单点快速定位。
常见误操作:Home 和 End 单独按,会受软换行干扰(比如长行被自动折行时,Home 只跳到视觉行首);而 Ctrl+Home/Ctrl+End 始终按真实逻辑行处理,更可靠。
macOS 用户对应用 Cmd+← 和 Cmd+→,效果一致。如果键盘无独立 ←/→ 键(如某些 MacBook 外接键盘),可用 Fn+← 替代 Cmd+←。
Ctrl+Shift+Home 选中到行首,不是跳转而是精准截取
这招本质是「选中」而非「移动」,但实际使用频率远高于纯跳转:光标停在某行任意位置(比如 user.name 的 . 后),按 Ctrl+Shift+Home,立刻从光标向左选中到行首,包括开头所有空格和 Tab。
适用场景:
- 删掉行首统一前缀(如批量去掉
//注释标记) - 提取字段名(光标放在
data.user.id的id后,一键选中前面全部) - 保留缩进对齐的前提下剪切内容(选中后按
Backspace比Delete更顺手)
注意:Shift+Home 不推荐——它只在当前视觉行内选,软换行下会出错;Ctrl+Shift+← 是按单词边界停,遇到 .、_ 就断,达不到“到行首”效果。
Ctrl+Shift+L 后光标默认在行尾,别急着输字符
想批量在多行开头加 console.log?先得明白:Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS)的作用是把选中区域按换行切分,每个光标**自动落在对应行的换行符前**——也就是视觉上每行最右的位置,不是行首。
所以正确流程是:
- 先用鼠标拖选或多行连续选(
Ctrl+Shift+↑/↓)确定目标范围 - 再按
Ctrl+Shift+L,看到光标全在行尾 - 立刻按
Home(Win/Linux)或Cmd+←(macOS),所有光标跳到行首 - 此时输入,字符才真正插在每行开头
漏掉 Home 这步,直接输内容,结果就是所有字符加在行尾,白忙活。
正则替换 ^ 和 $ 要小心 按钮和尾部空格
用 Ctrl+H 打开替换面板,想在每行开头加 // ,填查找为 ^、替换为 // ,看似简单——但有两个隐藏坑:
- 左下角的
(Match newline)按钮必须关闭,否则^和$行为异常,可能跨行匹配 -
^不管行首有没有空格,它就插在第一个字符前;如果目标行有缩进,结果变成// x = 1,缩进被破坏
更安全的做法:查找填 ^(\s*)(捕获行首所有空白),替换填 // $1,这样缩进保留,注释对齐。
同理,行尾加内容时,别直接用 $,先关掉
按钮,再用 \s*$ 匹配尾部空白,避免 ; 插在空格后面。
行首行尾操作看着简单,但 Sublime 对“行”的定义很严格:它认逻辑行、换行符、缩进空白,不认视觉折行或鼠标拖动的松散范围。多数问题都出在没区分清「跳转」「选中」「多光标落点」这三类行为,盯住光标实际停在哪,比背快捷键更重要。











