要原样粘贴或智能对齐:Ctrl+Shift+V强制原样(需复制含开头空白、语法正确、禁用detect_indentation),paste_and_indent智能对齐(需语法识别正确、光标在空行开头或行尾、纯文本内容)。

粘贴后缩进塌陷?先分清你要的是“原样”还是“对齐”
Sublime 默认的 Ctrl+V 既不完全保留原始缩进,也不自动对齐——它会尝试按当前行缩进风格“折中调整”,结果常是代码缩进全乱。真正可控的只有两条路:Ctrl+Shift+V(强制原样)和 paste_and_indent(智能对齐)。别指望右键粘贴或 Ctrl+V 自动搞定。
想粘贴即对齐(比如插 AI 生成的 Python 代码到函数里)
必须满足三个条件,paste_and_indent 才会生效:
- 当前文件右下角显示的是
Python、JavaScript等具体语法,不是Plain Text;点一下手动切,或用Ctrl+Shift+P输入Set Syntax: Python - 光标停在空行开头,或已有内容行的末尾;停在中间第 3 个字符处,它直接静默失败
- 粘贴内容是纯文本(不含富文本格式);从浏览器复制?先粘到记事本再中转一次
推荐绑定快捷键:在 Preferences → Key Bindings – User 中加这一条:
[{"keys": ["ctrl+alt+v"], "command": "paste_and_indent"}]比反复调命令面板快得多。
为什么 paste_and_indent 像没开一样?
常见失效原因不是配置错了,而是被以下因素屏蔽:
-
detect_indentation为true(默认),且文件开头混用空格和 Tab,Sublime 放弃缩进推断,paste_and_indent失去依据 - 插件劫持了 paste 行为,比如
Emacs Pro Essentials或某些剪贴板管理器 - 当前视图语法识别错误,例如 Vue 单文件组件里的
<script>块被当成HTML,缩进规则错配
临时救急:粘贴完立刻按 Ctrl+Shift+P → 输入 Reindent → 回车,比重试更可靠。
从微信、PDF、网页复制带缩进的代码?用 Ctrl+Shift+V
这个快捷键跳过所有缩进逻辑,只认复制内容开头的空格和 Tab。但前提是:
- 复制时选中了行首空白——开启
{"draw_white_space":"all"}看得见空格和 Tab - 目标文件语法已设对(如 Python 文件不能是
Plain Text) - 关掉
detect_indentation,否则打开文件时 Sublime 可能强行“矫正”你刚粘进去的缩进
鼠标右键粘贴永远不可控——它走系统级纯文本通道,缩进丢光、换行错位、中文变乱码都可能发生。只信快捷键。


















