vscode中claude插件的内联差异inline diff窗口不正常显示解决办法

📅 2026/7/3 1:56:30 👁️ 阅读次数 📝 编程学习
vscode中claude插件的内联差异inline diff窗口不正常显示解决办法

笔者在使用vscode的Claude for vscode插件的Ask before edit模式时,发现在修改代码时,不会在vscode的代码编辑窗口中显示内联差异视图,而只是显示在与Claude的聊天框窗口中。经过在A/的GitHub仓库的issue中寻找,发现解决办法如下:

GitHub - russellgilbert/claude-code-diff-fix: Script to fix Claude Code not opening a side-by-side diff tab in VS Code. · GitHub

这是一个已知的CRLF 行尾符问题

问题分析

根本原因:

  1. Windows 文件使用 CRLF (\r\n)- 你的代码文件使用 Windows 风格的行尾符
  2. Claude Code 的编辑字符串使用 LF (\n)-Claude的 Edit 工具生成的oldString使用 Unix 风格
  3. 多行编辑匹配失败- 当进行多行编辑时,"line1\nline2"无法匹配文件中的"line1\r\nline2"
  4. 静默回退- 匹配失败后,扩展静默回退到聊天窗口的内联 diff,不打开侧边 diff 标签

为什么单行编辑可以工作:单行编辑没有换行符,所以不存在不匹配问题。

解决方案

这个修复脚本patch_claude_crlf.js可以解决这个问题。你需要:

  1. 运行补丁脚本:

    node 你的脚本存放路径\patch_claude_crlf.js
  2. 重新加载 VSCode:

    • Ctrl+Shift+P
    • 输入 "Developer: Reload Window"
    • 回车
  3. 验证修复:

    • 打开一个 CRLF 文件(VSCode 右下角会显示 CRLF)
    • 让claude进行多行编辑
    • 应该会看到侧边 diff 预览

注意:每次 Claude Code 扩展更新后,你需要重新运行这个补丁脚本。

脚本来自:GitHub - russellgilbert/claude-code-diff-fix: Script to fix Claude Code not opening a side-by-side diff tab in VS Code. · GitHub