Sublime中不连续多行选中需先Cmd+Click/Ctrl+Click添加光标,再按Cmd+L/Ctrl+L逐行选中;或用Find All定位关键词后按Cmd+Shift+L/Ctrl+Shift+L生成光标,再统一操作。

怎么用 Cmd+Click(Mac)或 Ctrl+Click(Windows/Linux)加光标选不连续行
Sublime 本身不支持“跳跃式选中多行”这个动作,它没有一键选中第3、7、12行的原生命令。所谓“跳跃选中”,本质是手动添加多个独立光标,再配合整行选择触发器完成——不是靠选区,而是靠光标位置。
正确做法是:Cmd+Click(macOS)或 Ctrl+Click(Windows/Linux)在每行任意位置点击,每个点击都会新增一个光标;然后立刻按 Cmd+L(macOS)或 Ctrl+L(Windows/Linux),当前光标所在行就会被完整选中。重复这个过程,就能实现不连续多行的精准选中。
- 别在空行末尾点——那会把光标落在换行符后,
Cmd+L无法选中该行内容 - 如果某次
Cmd+L没反应,说明光标没落在有效逻辑行内(比如点进了折叠区域但没展开) - 点了 5 个位置后,按
Cmd+U可逐次撤回光标,不是删文本,是退掉最后一个光标
为什么 Ctrl+L 连按不能跳着选,而必须配合点击
Ctrl+L / Cmd+L 是累加式行选中,只向下扩展,不跳行。连按三次就是选中当前行 + 下一行 + 再下一行——它是线性、顺序的,不是索引式的。想跳着选,就必须打破这个顺序依赖,靠鼠标点击把光标“扔”到目标行上。
常见误区是:先 Cmd+L 选中第1行 → 按住 Cmd 键 → 点击第5行 → 以为自动选中了两行。实际只会新增一个光标在第5行,第1行选区还在,但第5行没被选中——你得再按一次 Cmd+L,这次作用于第5行光标,才真正选中它。
- 光标和选区是两件事:光标可多,选区默认只属于当前活动光标
- 所有光标都得单独触发一次
Cmd+L才能变成“被选中的行” - 如果已经有一堆光标,全按一遍
Cmd+L太慢?那就用正则替换代替:选中全部目标行 →Ctrl+H→ 勾选 regex →Find填^.*$→Replace填你要的操作(比如加前缀、包裹函数)
用 Find All 选中特定内容所在的行(带条件的跳跃选中)
当不连续行有共同特征(比如都含 console.log、都以 if 开头、都包含某个变量名),Ctrl+Cmd+G(macOS)或 Ctrl+Shift+L(Windows/Linux)比手动点更稳——前提是先用查找框定位到那个词。
操作链是:Cmd+F 输入关键词 → 回车确认匹配 → 按 Cmd+Enter(macOS)或 Alt+Enter(Windows/Linux)执行 Find All → 所有匹配项高亮 → 此时再按 Cmd+Shift+L(macOS)或 Ctrl+Shift+L(Windows/Linux),就能把每处匹配所在的整行拆成独立光标。
- 大小写敏感默认开启,右下角状态栏点
Case Sensitive可切换 - 如果关键词在行中间,
Cmd+Shift+L会把光标放在匹配位置,不是行首——想统一改行首?按Home键,所有光标同步跳到各自行首 - 这个方法选出来的行数 = 匹配次数,不是行号。如果某行有两个
log,会被算作两次,结果多出一个光标
选完之后编辑/删除容易错在哪
多行选中后直接打字或删,看似同步,但实际行为取决于光标状态:如果只是多个光标、没形成多选区,删会删掉每个光标右侧字符;如果已用 Cmd+L 把每行都选中了,删就是删整行内容(不含换行符)。
- 删整行?确保每行都是完整选中状态(选区高亮覆盖整行),再按
Delete或Backspace - 想删行+换行符?选中后按
Ctrl+Shift+K(Windows/Linux)或Cmd+Shift+K(macOS),这是原生命令run_command: delete_line - 粘贴时错位?别用
Cmd+V,用Cmd+Shift+V(macOS)或Ctrl+Shift+V(Windows/Linux),否则剪贴板第一行会重复贴到所有光标位置 - 最隐蔽的坑:某行末尾有空格或制表符,
Cmd+L会把它一起选中,删的时候看起来“少了一格”,其实是删掉了不可见字符


















