关闭vscode粘贴自动格式化需三步:一设"editor.formatonpaste": false;二设"editor.autoindent": "none";三关"editor.selectionclipboard": false,避免缩进错乱与意外粘贴。

关闭粘贴自动格式化(editor.formatOnPaste)
VSCode 默认会在你按 Ctrl+V 或 Cmd+V 粘贴时,调用当前语言的格式化器重排代码——比如把从网页复制的一行混乱 JS 自动拆成多行、补括号、对齐缩进。这不是“智能”,而是干扰。
- 打开设置:
Ctrl+,(Windows/Linux)或Cmd+,(macOS),搜索editor.formatOnPaste - 把开关设为
false;如果找不到,直接在settings.json里加一行:"editor.formatOnPaste": false - 注意:该设置只影响“粘贴后格式化”,不影响保存时的
editor.formatOnSave,后者需单独关掉
禁用自动缩进干扰(editor.autoIndent)
即使关了格式化,VSCode 还可能在粘贴时“猜”你想怎么缩进——尤其粘贴多行代码时,它会强行把整段往右推几格,导致缩进错乱、Python 直接报 IndentationError。
- 搜索
editor.autoIndent,设为"none"(字符串,不是布尔值) - 不推荐设为
false,因为旧版本 VSCode 会忽略该值,而"none"是当前稳定有效的取值 - 若只想对某类文件禁用(如 Markdown 或 JSON),可在
settings.json中写:"[markdown]": { "editor.autoIndent": "none" }
停用鼠标滚轮复制粘贴(editor.selectionClipboard)
这个功能常被忽略,但它是“非主动复制却意外粘贴”的元凶:只要鼠标选中一段文本,VSCode 就悄悄把它存进系统剪贴板(X11 风格),接着滚轮中键一按,就糊一脸——和你 Ctrl+C 的内容完全无关。
- 搜索
editor.selectionClipboard,设为false - 顺手检查
editor.emptySelectionClipboard是否也为false,避免空选时也触发写入 - 该行为在 Linux 上最明显,macOS/Windows 默认不启用,但插件或同步设置可能把它带过来
需要纯文本粘贴时别硬扛,默认快捷键更可靠
有时你就是想粘一段带样式的 HTML 片段或带颜色的终端输出,又不想它被当成代码解析——这时候等它出错再删缩进,不如一开始就走干净路径。
- macOS:
Shift+Option+Cmd+V|Windows/Linux:Shift+Ctrl+Alt+V,这是 VSCode 原生支持的“纯文本粘贴”,无需装插件 - 别依赖命令面板里的
Paste as Plain Text,除非你真装了对应扩展;原生 VSCode 不提供该命令,搜不到是正常的 - 如果常用,可自定义快捷键:打开
keybindings.json,加一条:{"key": "ctrl+alt+v", "command": "editor.action.clipboardPasteAction"}(注意这是原生粘贴动作,不是扩展命令)
真正麻烦的不是设置项多,而是这些开关分散在不同语义下:formatOnPaste 管结构、autoIndent 管空格、selectionClipboard 管输入源——关错一个,问题照旧。建议改完一项就立刻试粘一段缩进敏感的 Python 或 YAML,别等写完十行才发现全歪了。










