列选择本身不支持固定长度截取,需组合光标操作:先在首行目标起始位前设光标,ctrl+shift+l 拆多光标,→ 移动至起始列,shift+→ 选指定长度;复杂场景推荐正则 ^.{4}(.{10}) 配合 find all。

列选择本身不支持“固定长度截取”,必须靠组合操作实现
Sublime Text 的列选择(Ctrl+Shift+L 或 Alt+鼠标拖拽)本质是创建多光标,不是按字符数切片。它不会自动帮你从第5位截到第12位——你得先让所有光标对齐到起始列,再统一向右移动指定步数,最后选中。这个过程依赖手动定位和精确计数,没有“一键截10字符”这种命令。
怎么用列选择 + 光标移动完成固定长度截取
适用场景:日志、CSV、固定宽字段文本(如每行前8位是时间戳、9–16位是状态码),你想批量提取中间一段。
- 把光标移到**第一行目标起始位置左侧**(比如要截第5–14位,就把光标放在第5个字符前)
- 按
Ctrl+L选中该行 → 再按Ctrl+Shift+L拆成多行光标 - 按
→向右移动4次(跳过前4个字符),此时所有光标都停在第5位上 - 按住
Shift,再连按→10次(选中接下来10个字符)——注意:这是按方向键计数,不是按视觉宽度 - 如果某行实际不足14位,选区会自然终止在行尾,不会报错
常见失败原因和绕过方法
列选择对齐失败时,往往不是快捷键问题,而是光标没落在“可对齐的列”上。
- 文件混用空格和 Tab:按
Ctrl+Shift+P→ 输入Indentation: Convert Indentation to Spaces统一为空格 - 行首有 BOM 或不可见控制字符:用正则
^\s*先清理开头空白,再重试 - 想截的字段含中文或全角符号:一个中文占2列宽,但
→仍按 Unicode 字符计,不是像素宽度——别用鼠标估,用状态栏右下角的“列:X”数字确认 - 原始数据缩进不齐(比如有些行多两个空格):先用
Ctrl+Shift+P→Align Tabs插件对齐,或写一行正则替换^(\s{0,4})→强制补空格
比列选择更稳的替代方案:正则 + Find All
当字段位置固定但行数多、格式杂,硬靠方向键容易错位。这时用正则反而更快:
- 打开
Ctrl+F,开启.*(正则模式) - 输入
^.{4}(.{10})—— 表示“行首跳过4字符,捕获接下来10个任意字符” - 点
Find All,所有匹配内容高亮并被选中 - 按
Ctrl+C复制,粘贴即得纯字符串列表(无换行符干扰) - 注意:
.默认不匹配换行符,所以安全;若需包含换行,改用(?s)^.{4}(.{10})
真正难的不是操作步骤,而是判断该用列选择还是正则——前者适合“人眼能数清列数”的干净数据,后者适合“位置固定但行数超50、含异常空行或编码混乱”的真实日志。











