如何在Visual Studio Code中复制一行或选择?

1107

使用Microsoft的Visual Studio Code,如何复制一行代码并上下拖动?(类似于Sublime的cmd+shift+d行为)

这是我经常使用的功能,在没有它的情况下使用Visual Studio Code感到困难。


1
这个回答解决了你的问题吗?Visual Studio Code中的重复行 - Arash.Zandi
1
我在这里也发布了一个答案,可能会有所帮助:https://dev59.com/lFkS5IYBdhLWcg3wP0Rq#67620196。它向您展示如何复制一个__selection__,但它还做了更多的事情:进入下一行,并在活动文件的语言中生成该选择的打印语句。 - aderchox
24个回答

1965

您需要的命令是editor.action.copyLinesDownActioneditor.action.copyLinesUpAction

您可以通过选择文件 > 首选项 > 快捷方式来查看相关绑定键。

Windows:

Shift+Alt+下箭头Shift+Alt+上箭头

Mac:

Shift+Option+下箭头Shift+Option+上箭头

Linux:

Ctrl+Shift+Alt+下箭头Ctrl+Shift+Alt+上箭头

(在Linux中可能需要使用数字键盘的下箭头上箭头)

此外,命令editor.action.moveLinesUpActioneditor.action.moveLinesDownAction用于移动行,并分别绑定到Windows和Mac上的Alt+下箭头Alt+上箭头以及Linux上的Ctrl+下箭头Ctrl+上箭头


91
似乎Alt+上箭头Alt+下箭头可以将已存在的行向上或向下移动。不错。 - Chris
5
在VS2015中,"工具 | 选项 | 环境 | 键盘"是指"Tools | Options | Environment | Keyboard"。 - Mike Keskinov
24
你知道如何“复制所选内容”吗?我找不到合适的命令 :( - nZeus
5
不同的情况。在这种情况下,当您选择一个“行尾+下一整行”时,它将复制2行(整个第一行,而不仅仅是\r\n)。那真的很烦人 :( - nZeus
48
在Linux上,ctrl+shift+alt+下/上只适用于数字键盘上的箭头键。 - Jack Steam
显示剩余20条评论

227

您可以从以下位置找到键盘快捷键:

文件 > 首选项 > 键盘快捷方式

默认的键盘快捷键如下:

复制行向下操作:按下 shift+alt+down

复制行向上操作:按下 shift+alt+up

将行向上移动操作:按下 alt+up

将行向下移动操作:按下 alt+down

或者您可以通过编辑 keybindings.json 文件来重写键盘快捷键:

文件 > 首选项 > 键盘快捷方式

例如:

[
    {
        "key": "ctrl+d",
        "command": "editor.action.copyLinesDownAction",
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+shift+up",
        "command": "editor.action.moveLinesUpAction",
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+shift+down",
        "command": "editor.action.moveLinesDownAction",
        "when": "editorTextFocus"
    }
]

另外,如果你需要将一行移动到较远的位置,使用ctrl+C和ctrl+X可以轻松地复制/剪切当前行而无需选择它。而ctrl + L(命令expandLineSelection)则会选择一行。重复按下ctrl + L可以选择更多的行,从而轻松地进行块选择。或者你可以用鼠标进行粗略的块选择,然后再按下ctrl+L来包含两端。 - aamarks
遗憾的是,在默认 PDF 中,并没有关于 Alt+Shift+up/down 快捷方式的列表。但这并不完全正确,因为“多光标和选择”部分中提到了“在上方/下方插入光标”的操作! - Marecky
我只是添加了自己的 ctrl+D 快捷键并删除了其他快捷键的冲突。 - Salem

100

这个问题缺少答案,即"如何复制代码选择",类似于Sublime的cmd/ctrl+shift+d或Jetbrains的cmd/ctrl+d行为。

从VS Code Marketplace安装插件"Duplicate selection or line"

Duplicate selection or line VS Code plugin

此扩展提供ctrl+d(Windows/Linux)和cmd+d(MacOS)的绑定。 若要自定义键盘快捷方式,请转到"首选项->键盘快捷方式"

{
  "mac": "cmd+d",
  "key": "ctrl+d",
  "command": "geeebe.duplicateText",
  "when": "editorTextFocus"
}

注意:这个快捷键还复制了当前行,所以如果你安装了它,请先移除之前已经设置的ctrl+d快捷键映射到copyLinesDownAction(如果你之前设置过的话),否则会出现复制选择内容的bug。


4
我对"复制行"的快捷键感到失望,因为它的行为不像Sublime Text/Intellij Ctrl+D功能(它复制了整个行而不仅仅是所选内容)。谢谢你指出这个插件! - Timothé Malahieude
1
我本来打算放弃使用VSCode并安装Atom,但是这个扩展程序阻止了我。VSCode的默认重复功能不够好。在这方面,Atom要好得多。 - vikrant
这是最有帮助的答案!! - Juanma Guerrero
Ubuntu 22.04:我将复制行向下设置为ctrl-shift-d,它的效果与Atom中相同。(首先从显示运行和调试中删除它。) - Daniel
使用Ctrl+P安装它,ext install geeebe.duplicate 不幸的是,该扩展目前还不适用于VSCodium。有关请求的问题,请点击此处 - undefined

39

在 VS Code 中,它们将此称为 复制上方的行复制下方的行

从菜单中选择:

文件 > 首选项 > 键盘快捷方式

检查已分配的键盘快捷方式,或自行调整。

有时默认分配的快捷键可能无法工作,这往往是由于操作系统造成的。

在我的 Ubuntu 上,我将其调整为:Ctrl+Shift+D

输入图片说明


虽然不完全相同,但仍是一个有趣的隐藏功能。为什么这个不在菜单中呢? - Hakanai

36

VSCode 中,使用 Ctrl+CCtrl+V 复制下面整行。

我更喜欢这种方法,因为用一只手就可以操作,感觉更自然。

大多数人可能会采用被接受的答案,但是 Down 键位于键盘的另一侧。 因此你有两个选择,要么左手和右手同时按 (左手:L Shift+L Alt+ 右手:Up/Down),要么使用单只手右手的 R Shift+R Alt+Up/Down。在我看来,第二个选项感觉怪怪的,我宁愿使用我的手自然放置在键盘上的选项,如果是单只手,那就更好了。


15
主要问题在于你会丢失剪贴板上的内容。 - Chris
这个答案在2023年5月发布的vscode版本中已经失效了。 - Ferrybig

26

尝试使用 ALT+SHIFT+UP/DOWN

这对我有效!


25
  • 针对已经从Jetbrains IDE迁移到VSCode的用户。

  • 安装(任何人):

  1. JetBrains IDE按键映射:扩展
  2. vscode-intellij-idea-keybindings 扩展 (首选)
  • 使用此 Intellij Darcula Theme: 扩展

  • 按键映射已经覆盖了大部分VS Code的快捷键,使得VS Code更像 'JetBrains IDE'。

  • 上述扩展将JetBrains的按键映射导入到VS Code中。安装扩展并重新启动VS Code后,您可以像使用IntelliJ IDEA、Webstorm、PyCharm等一样使用VS Code。


2
只需要安装 JetBrains IDE Keymap 扩展即可。这将为您提供熟悉的 ctrl-D 快捷键。 - DeanOC
帮了我很多,谢谢伙计。 - Assad Yaqoob
它让我输入15个字符,但我想说的是:“兄弟” - jaumebalust

20

只需转到文件 -> 首选项 -> 键盘快捷方式,在那里您可以更改任何想要的快捷方式。搜索重复项并将其更改为您在其他编辑器中经常使用的内容。我更改为 Ctrl + D 。


4
我现在完全同意这个想法。我在Linux上尝试了被接受的答案,但它根本行不通。编辑你自己的快捷方式是一种很好的实践,并为更好的未来开启新的开始。CTRL + D是最直观和简单的快捷键命令。为什么要用CTRL + SHIFT + ALT +..请停止,否则我的电脑几乎会关机并重新启动。 - xdevx32
4
你需要在键盘快捷键列表中更改的命令是:Duplicate Selection (editor.action.duplicateSelection) - Edenshaw

18

对于Windows:

复制上方 - shift+alt+up

复制下方 - shift+alt+down

对于mac:

复制上方 - shift+option+up

复制下方 - shift+option+down

对于Linux:

复制上方 - ctrl+shift+alt+8

复制下方 - ctrl+shift+alt+2

注意:您可以按ctrl+shift+p,然后在调色板中输入打开键盘快捷方式,然后按Enter来更改Visual Studio Code的键盘快捷键绑定,这样新文件(键盘快捷键文件)就会打开。您可以在其中看到所有快捷键,并通过双击相应的快捷键并输入自己的快捷键来更改键位绑定,最后按Enter即可。

希望这能帮助到有需要的人!


1
这些建议都不适用于 VS Code 1.49.2 (Electron 9.2.1, Chrome 83.0.4103.122, Node.Js 12.14.1, Linux 5.11.0-36-generic)。我想知道在使用 VS Code 时,它是否有时会是一个不断变化的目标。 - will

15
请注意,对于Ubuntu用户(<= 17.4),Unity使用CTRL + ALT + SHIFT + Arrow Key在虚拟工作区之间移动程序,这与VS Code快捷键冲突。您需要重新绑定editor.action.copyLinesDownActioneditor.action.copyLinesUpAction以避免冲突(或更改工作区按键绑定)。
对于使用GNOME的Ubuntu 17.10+,根据其文档,似乎GNOME不会以同样的方式使用此键绑定,但如果有人使用17.10上的原始工作区可以确认这一点,那么对未来的答案寻求者可能很有帮助。

1
我正在使用Ubuntu 19.10,但Ctrl+Alt+Down仍然可以在工作区之间移动。 - BeeOnRope
1
要更改您的工作区键绑定(在Ubuntu 22.04上测试),请在终端中运行以下命令:gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-down "[]" && gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-up "[]" && gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down "[]" && gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up "[]" - domdomegg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接