Atom复制当前行的默认快捷键是Ctrl+Shift+D(Windows/Linux)或Cmd+Shift+D(macOS),原地复制整行且光标落于新行开头,仅对光标落在行内字符位置(含空格)的非选中状态生效。

Atom 复制当前行的快捷键是什么
默认就是 Ctrl+Shift+D(Windows/Linux)或 Cmd+Shift+D(macOS),按一次就原地复制当前整行,光标自动落到新行开头。这个操作不依赖插件,开箱即用。
注意:它只对「有内容的行」或「空行」生效;如果光标在行首前、行尾后,或者选中了部分文本,Ctrl+Shift+D 会失效——它严格识别“当前行”而非“光标所在位置”。
- 光标必须落在某一行的任意字符上(包括空格),不能悬在行首左侧或行尾右侧
- 如果已选中文本,快捷键会复制选中内容,而不是整行——先按
Esc清除选区再试 - 多行选中时,
Ctrl+Shift+D会对每一行分别复制,生成双倍行数
为什么有时按了 Ctrl+Shift+D 没反应
最常见原因是快捷键被其他插件劫持,尤其是装了 atom-ide-ui、platformio-ide 或键盘映射类插件(比如 vim-mode-plus)之后。
验证方法:打开 Atom > Key Binding Resolver(Windows/Linux 是 Ctrl+.,macOS 是 Cmd+.),然后按 Ctrl+Shift+D,看右边是否显示绑定到 editor:duplicate-lines。如果不是,说明被覆盖了。
- 临时解决:在
Settings > Keybindings里搜索editor:duplicate-lines,点击右侧铅笔图标,手动重绑定为Ctrl+Shift+D - 根本解决:禁用冲突插件,或在
keymap.cson里强制写死:'atom-text-editor:not([mini])':\n 'ctrl-shift-d': 'editor:duplicate-lines'
- 别碰
core.allowPendingPaneItems这类设置——它影响的是新建标签页逻辑,和复制行无关
想复制并移动到下一行?别用剪贴板
有人习惯先 Ctrl+C 再 ↓ + Ctrl+V,这多两步、还污染剪贴板。原生 Ctrl+Shift+D 就是为此设计的:复制后光标直接落在新行开头,可立刻编辑。
如果你需要“复制并插入到当前行下方但保持原光标不动”,那不属于 Atom 默认行为,得靠插件(如 advanced-new-file 不行,它只管新建;真正能改行为的只有 keymap.cson 自定义命令)。
- 不要试图用
Ctrl+X+Ctrl+V模拟——剪切再粘贴会删原行 -
Ctrl+Shift+K是删行,和复制无关,误按容易丢代码 - 复制多行时,
Ctrl+Shift+D会在每行末尾追加一行,不是整体粘在下面——这是预期行为,不是 bug
和 VS Code / Sublime 的行为差异在哪
VS Code 的 Shift+Alt+↓ 和 Sublime 的 Ctrl+Shift+D 表面一样,但底层逻辑不同:VS Code 允许光标悬停在行尾右侧仍触发复制;Sublime 对空行支持更稳;Atom 则最严格——必须有明确的“行归属”。
这意味着:从其他编辑器转来的用户,常因光标位置不对而觉得 Atom “失灵”。实际不是 Bug,是 Atom 的 TextEditor API 把“当前行”定义为 getLineForBufferRow(getCursorBufferRow()),不处理游离状态。
- 跨编辑器迁移时,养成按
→或←微调光标到行内再操作的习惯 - 不要依赖鼠标点击行号来“选中行”——Atom 的行号点击是折叠/断点操作,不是选中
- 如果项目长期维护且团队混用编辑器,建议在
.editorconfig里统一换行符,避免复制后因\r\n/\n差异引发格式错乱
真正麻烦的不是记不住快捷键,而是光标状态不可见——Atom 不像 VS Code 那样高亮当前行背景,默认主题下你根本不知道“当前行”到底算哪行。调一下 styles.less 加个 .line.cursor-line 背景色,省掉一半排查时间。

















