vscode中代码块格式化与行去重完全独立:局部格式化用ctrl+k ctrl+f(需先选中),而非shift+alt+f;sort lines (unique)去重需先清理空格、空行及不可见字符,且判重严格逐字节匹配。

直接说结论:VSCode 里「代码块格式化」和「行去重」是两套完全独立的机制,不能混用;想对某段代码快速格式化,用 Ctrl+K Ctrl+F;想对多行文本去重,必须先选中、再执行 Sort Lines (Unique),且前提是你已清理空格和空行。
怎么只格式化选中的代码块(不是整个文件)
很多人误以为 Shift+Alt+F 能局部格式化,其实它永远作用于整个文档。真正能限定范围的只有 Ctrl+K Ctrl+F(Windows/Linux)或 Cmd+K Cmd+F(macOS)。
- 必须先手动选中目标代码块(比如一个函数体、一段 JSX、一组 import),再按快捷键
- 光标停在大括号内时,可用
Shift+Alt+→快速扩选当前作用域——这是最稳的选中方式,比鼠标拖更准,尤其嵌套深时 - 如果选中后按了
Shift+Alt+F,结果仍是整文件格式化,别怪插件,是命令本身设计如此 - 部分语言(如 Python)若没装对应 formatter(如 autopep8 或 black),
Ctrl+K Ctrl+F会静默失败,无提示也不报错
为什么 Sort Lines (Unique) 总是去不干净重复行
Sort Lines (Unique) 的判重逻辑极其严格:两行字符串逐字节相等才算重复。实际中绝大多数“看起来重复”的行,其实藏着空格、制表符、BOM 或末尾换行符差异。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 执行前务必先运行
Ctrl+K Ctrl+X(Trim Trailing Whitespace)清除每行末尾空格 - 再用
Ctrl+H→ 正则模式 → 搜索^\s*$→ 替换为空,删掉所有纯空白行 - 如果原始数据来自日志或剪贴板,很可能含不可见 Unicode 字符(如 \u200b 零宽空格),此时需用扩展如 “Remove Zero Width Characters” 预处理
-
Sort Lines Ascending和Sort Lines Descending都不带去重功能,勾不勾 “Unique” 是两个命令,别混淆
数值排序失效?因为 VSCode 默认按字符串排
你看到 10 排在 2 前面,不是 bug,是预期行为。Sort Lines 从不解析数字,只做字典序比较。
- 想按数值大小排(比如版本号、端口号、数组索引),得预处理:用
Ctrl+H正则替换^(\d+)为000$1,补零到统一长度后再排序 - 对混合行(如
port: 8080),先用列选择(Alt+鼠标拖选)提取数字列单独排序,再粘回原位置——别指望一行正则全搞定 - 真实项目中,这类需求建议导出为 CSV,用外部工具(如
sort -n)处理,VSCode 不是数据清洗工具
最常被忽略的点:格式化依赖语言模式和已启用的 formatter 插件,而去重只认纯文本。同一段代码,切到 plaintext 模式下 Ctrl+K Ctrl+F 会失效,但 Sort Lines (Unique) 依然有效——别在错误的语言上下文中折腾命令。










