Sublime多行操作是运维脚本批量生成的硬通路,关键在于光标精准定位、避开自动合并陷阱及选用列选择而非正则处理对齐字段。

Sublime 的多行操作不是“锦上添花”,而是运维脚本批量生成时绕不开的硬通路——它不依赖外部工具、不启动解释器、不写循环,5 秒内就能把 200 行主机名转成带 ssh 命令的 shell 脚本,关键在于选对触发方式、卡准光标位置、避开自动合并陷阱。
Ctrl+Shift+L 后光标没到行首?加引号直接错位
批量给每行加 ssh user@ 前缀或 .sh 后缀,最常出错的是光标没真正落在逻辑行首。Sublime 的 Home 键在缩进不一致的文件里只跳到当前行第一个非空格字符前,不是物理行首。
- 先全选目标行(
Ctrl+L连续按或鼠标拖选),再按Ctrl+Shift+L拆光标 - 立刻按
Ctrl+Home(Windows/Linux)或Cmd+Home(macOS),确保所有光标压到每行最左端 - 此时输入
ssh user@,不会出现ssh user@ host1这种缩进残留 - 若已有缩进混乱,用
Ctrl+Shift+P→Indentation: Convert to Spaces统一后再操作
生成带序号的命令行参数:别用 Tab 展开 Emmet
Tab 触发 Emmet 在 .sh 或 .py 文件里默认失效,且 cmd$*5 这类写法会生成 HTML 标签结构,不是纯文本命令。运维场景要的是 host01、host02 这类可直接粘贴进脚本的字符串。
- 手动输入
host01→Ctrl+D选中01→Ctrl+Shift+L→ 按Delete清空数字部分 - 光标停在
host后,用Ctrl+Shift+P→ 输入Increment Selection→ 回车,自动生成01、02… - 起始值由你首次输入决定:先敲
10再执行命令,就从host10开始;步长需调整则再执行Increment Selection: Set Step - 零填充必须靠正则补:查找
^host(\d+)$,替换为host0$1(适用于 1→01),或更稳的^host(\d{1})$→host00$1
跨列修改 CSV 或日志字段:列选择比正则更稳
运维常要批量改日志里的 IP 段、CSV 第 4 列的端口号、或 JSON 数组里每个对象的 timeout 值。正则容易误匹配嵌套结构,而列选择(矩形选区)只要对齐就精准。
- 把光标放在目标列第一个字符上,按住
Ctrl+Alt+↓(Windows/Linux)或Cmd+Option+↓(macOS)向下拉出矩形选区 - 松手后直接输入新值(如
8080),所有行该列同步覆盖,不碰其他字段 - 列必须严格对齐:若原始数据是制表符分隔,用
View: Word Wrap关闭,避免视觉错觉;空格分隔则先Ctrl+H→ 查找\s+替换为单个\t再列选 - 改完立刻检查:列选不处理换行符,若某行字段含换行(如日志 message),该行会偏移,此时必须切回正则模式
^(?:[^,\n]*,){3}([^,\n]*)替换第 4 列
多光标改完就丢光标?不是 Bug 是设计
按 Ctrl+Shift+L 后移动方向键、删空格、甚至只是等半秒再输入,Sublime 就会自动合并光标——这不是插件冲突或崩溃,是它的多光标收敛机制在生效。
- 唯一可靠做法:
Ctrl+Shift+L→ 立刻输入/删除/粘贴,中间不加任何光标移动操作 - 已失焦?
Ctrl+U只能撤销最近一次合并,更稳的是重新Ctrl+F搜关键词 →Enter跳到首个匹配 →Ctrl+Shift+L - 想保留光标位置做后续操作(比如改完 host 名再统一加
&后台符号)?用Ctrl+Shift+P→Selection: Expand Selection to Line先扩选整行,再Ctrl+Shift+L,这样光标仍在行尾可继续操作
真正卡住效率的,从来不是功能有没有,而是光标在哪、要不要动、动了之后还剩几个——这些细节不踩一遍坑,根本意识不到它们有多致命。

















