ctrl+shift+l在选区每换行符前放光标,无换行符则仅一个光标;ctrl+d严格匹配整词边界;多行末尾加内容需先ctrl+l选行再ctrl+shift+l+end;列选择须等宽字体、关软换行、禁拖动。

Ctrl+Shift+L 为什么只生成一个光标?
它不是“选几行就加几个光标”,而是把当前选区里每个换行符(\n 或 \r\n)前的位置,各放一个光标。选区不含换行符,就只出一个光标。
常见失效场景:
- 鼠标拖选时没覆盖最后一行末尾的换行符(视觉上像选中了,实际漏掉
\n) - 光标悬停但未选中任何文本,
Ctrl+Shift+L静默跳过 - 选区全是空格或制表符,光标落在缩进位置,一输内容就覆盖缩进
稳妥做法:Ctrl+L 逐行选中目标行(每按一次加一行),再统一按 Ctrl+Shift+L,确保每行都参与拆分。
Ctrl+D 选不全同名变量怎么办?
Ctrl+D 默认开启 match_whole_word: true,且严格区分大小写、下划线、括号和标点边界。它不是模糊搜索,而是从当前选中片段出发,找下一个字面完全一致的匹配。
比如双击选中 user_id 后连按 Ctrl+D:
- 会跳过
user_id_list(多了_list) - 跳过
USER_ID(大小写不符) - 跳过
user_id,(逗号破坏单词边界)
可靠操作:
- 双击选词时确保不带前后空格或标点
- 想跳过某处匹配:按住
Ctrl+K不松,再按Ctrl+D - 一次性全选全部匹配:用
Alt+F3(Windows/Linux),不是反复按Ctrl+D
如何在多行末尾统一加内容(如分号)?
不能靠列选择硬框——行长短不一,容易错位;也不能直接 Ctrl+Shift+L 后输,因为空行光标会停在行首而非行尾。
推荐流程:
-
Ctrl+L多次选中目标行(避开空行,或单独处理) -
Ctrl+Shift+L拆光标 - 按
End(或Ctrl+→)让所有光标跳到行尾 - 直接输入内容,比如
;
若需全局生效且无干扰,开正则替换更稳:Ctrl+H → 勾选 .* → 查找 $ → 替换为 ; → 全部替换。
列选择(竖向编辑)总对不齐?
列选择不是按“视觉位置”,而是按字符索引列数定位。中文、全角符号、不同字体宽度都会导致偏移。
必须满足的条件:
- 快捷键是
Alt+Shift+鼠标拖拽(Windows/Linux),不是单按Alt - 字体必须为等宽(如
Consolas、Fira Code),系统默认 UI 字体大概率错位 - 文件不能是只读状态(状态栏右下角显示
read only时列编辑静默失败) - 软换行(
Word Wrap)必须关闭,否则逻辑行被折断,点击坐标失准
另外,drag_text 默认为 true,会导致 Ctrl+Click 触发拖动而非加光标——务必在用户设置里加 "drag_text": false。
最易忽略的一点:多光标模式下,任意方向键、Backspace、Delete、甚至 Tab,都会立刻合并或丢弃非活动光标。这不是 bug,是设计逻辑——它只允许“选完即改”,没有“先定位再编辑”的缓冲阶段。











