ctrl+shift+d 是 atom 原生复制当前行或选区的快捷键,无选中时复制整行(含缩进与换行符),有选中时仅复制所选内容,多行选中则每行下方各插入副本,行为由选中状态唯一决定。

Ctrl+Shift+D 就是复制代码块的正解,别绕路
Atom 原生支持「复制当前行或选区」,快捷键 Ctrl+Shift+D(Windows/Linux)或 Cmd+Shift+D(macOS)直接可用,不依赖插件、不污染系统剪贴板、自动带换行符。所谓“代码块”,在 Atom 里就是「当前光标所在行」或「已选中的文本范围」——它不区分“单行”还是“多行”,只看有没有选中内容。
- 无选中 → 复制整行(含缩进和换行符),新行插入在下方,光标落于新行开头
- 已选中文本 → 只复制所选内容(不含换行符),粘贴时不会自动换行
- 多行选中 → 每行下方各插入一份副本(不是整体粘贴到末尾)
- 多光标存在 → 每个光标位置各自复制所在行,行为稳定但易被误读为“复制全部光标间内容”
为什么按了 Ctrl+Shift+D 没反应?先查 Key Binding Resolver
最常见原因是插件劫持了快捷键,比如 vim-mode-plus、atom-ide-ui 或老版本的 duplicate-line-or-selection 插件。原生命令名是 editor:duplicate-lines,一旦被覆盖,就失效。
- 验证方法:
Ctrl+.(Win/Linux)或Cmd+.(macOS)打开快捷键解析器,再按Ctrl+Shift+D - 右侧显示
editor:duplicate-lines→ 正常,可放心用 - 显示
duplicate-line-or-selection:duplicate或其他路径 → 被插件接管,建议禁用该插件 - 显示
Unbound→ 快捷键丢失,需手动重绑
想复制上一行?Ctrl+Shift+D 不是“向上取值”,得组合操作
Atom 原生命令里没有“复制上一行”的独立动作。Ctrl+Shift+D 是向下复制,不是向上读取。如果你光标在第 5 行,它只会生成第 6 行,不会把第 4 行内容拿过来。
- 手动顺手组合:
↑→Ctrl+L(选中上一行)→Ctrl+C→↓→Ctrl+V - 更精准写法:
Ctrl+↑(跳至上一行开头)→Shift+Ctrl+↓(选中整行)→Ctrl+C→Ctrl+↓(跳回)→Ctrl+V - 高频需求建议装插件
line-duplicator,提供Ctrl+Alt+↑直接复制上一行(注意检查 GitHub 最后更新时间)
真正容易被忽略的点:选中状态决定一切
Ctrl+Shift+D 的行为完全由光标是否处于“无选中”状态决定。哪怕只多选了一个空格,它就从“复制整行”退化为“复制选区”。初学者常卡在这一步:明明记得快捷键,却总复制出错位或截断的内容。
- 有选中?先按
Esc清除,再试 - 光标悬在行首左侧或行尾右侧?它不识别为“某一行”,会静默失败
- 想批量操作多行?先用
Shift+↓或Ctrl+Click加光标,再统一Ctrl+L选中,最后Ctrl+Shift+D











