ctrl+shift+l 光标默认在行尾,需补按 home(windows/linux)或 cmd+←(macos)移至行首;大文件有延迟,vintage 模式下失效;正则 ^/$ 更可靠,列选需缩进一致,html 标签应使用正则追加。

Ctrl+Shift+L 后光标默认在行尾,不是行首
按 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS)后,光标确实会落在每行换行符前——也就是视觉上的“行尾”,而非你想要的行首。这是最常导致加错位置的根源。
必须立刻补一步:Home(Windows/Linux)或 Cmd+←(macOS)。否则输入的字符会堆在每行末尾,比如你想加 // 注释,结果变成 console.log('x');//。
- 若某行有缩进,
Home第一次只跳到缩进起点(比如 4 个空格后),再按一次才到真正行首;建议先统一缩进:Ctrl+Shift+P→ 输入Indentation: Convert to Spaces - 大文件(>10k 行)下
Ctrl+Shift+L响应有半秒延迟,别急着输,等所有光标点稳定出现再操作 - 开了 Vintage 模式时,
Ctrl+Shift+L被重映射为「选中到行尾」,多光标失效——关掉它或改用正则
正则替换 ^ 和 $ 是最稳的批量加法
对几十行以上、或需带条件(如跳过空行、避开已有注释)的操作,^ 和 $ 正则匹配位置比多光标更可靠,且不依赖光标定位精度。
打开 Ctrl+H(Windows/Linux)或 Cmd+H(macOS),勾选 .* 按钮启用正则:
- 加行首字符:查找栏填
^,替换栏填你要的内容,比如//或- - 加行尾字符:查找栏填
$,替换栏填;或 - 只给非空行加:查找
^(?=\S);跳过已有//的行:查找^(?!//) - 误填
^.*会吞掉整行内容,纯位置匹配才是安全做法
列选择(Alt+拖拽)适合对齐文本,但容易错位
列选择本质是竖向矩形框选,不是逻辑上的“每行开头”。它只在缩进完全一致时才准,一旦混用 Tab 和空格、或嵌套层级不同,光标就会偏移。
想用列选加行首字符,得先让结构可控:
- 按住
Alt(Windows/Linux)或Option(macOS),从第一行**真正行首**垂直拖到最后一行行首——不是靠目测,而是打开View → Draw White Space显式看到空白符后再拖 - 如果某行开头是制表符,而 Tab 宽度设为 2,但另一行用 4 个空格模拟缩进,列选必然错位
- 软换行开启(
word_wrap: true)时,列选无法跨软换行;操作前临时关闭 - 处理日志、Markdown 列表这类严格左对齐文本可用;写代码时优先用
Ctrl+Shift+L+Home
加 HTML 标签别用 Wrap with Tag,直接正则追加
wrap_with_tag 和 Emmet 的 Wrap with Abbreviation 是包裹整块选区,不是逐行追加。选中 5 行后执行,结果是 5 行被包进一对 <div> 里,而不是每行末尾各加一个 <code>











