如何在Visual Studio Code中复制一行或所选内容?


729

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

这是我经常使用的功能,并且在没有它的情况下很难使用Visual Studio Code。

Answers:


1324

您正在寻找的命令是editor.action.copyLinesDownActioneditor.action.copyLinesUpAction

您可以通过选择以下内容查看相关的键绑定:文件>首选项>键盘快捷键

视窗:

Shift+ Alt+ DownShift+ Alt+Up

苹果电脑:

Shift+ Option+ DownShift+OptionUp

Linux:

Ctrl+ Shift+ Alt+ DownCtrl+ Shift+ Alt+Up

(可能需要使用numpad DownUp用于Linux)

此外,命令editor.action.moveLinesUpActioneditor.action.moveLinesDownAction对移动线的,他们必然Alt+ DownAlt+ Up在Windows和Mac Ctrl+ DownCtrl+ Up在Linux上。


59
似乎Alt+UpAlt+Down将现有的生产线上下移动。尼斯
克里斯(Chris)

2
值得注意的是,在完整的Visual Studio中不存在copyLines操作,仅在Visual Studio Code中不存在。
user45623'1

4
工具| 选项| 环境| VS2015中的键盘
Mike Keskinov

15
您知道如何“重复选择”吗?我找不到合适的命令:(
nZeus

25
在Linux上,ctrl+shift+alt+down/up仅适用于数字键盘上的箭头键。
杰克·

174

您可以从找到快捷键

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

默认的键盘快捷键是

复制行向下动作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

我正在使用vscode 1.4,它无法正常运行
Kamlesh

49

它错过了这个问题的答案,“如何重复选择代码”类似于Sublime的cmd/ ctrl+ shift+ d或Jetbrains的cmd/ ctrl+d行为。

从VS Code Marketplace 安装插件重复选择或行

重复选择或行VS Code插件

该扩展提供了ctrl+ d(Windows / Linux)和cmd+ d(MacOS)的绑定。要自定义键盘快捷键首选项->键盘快捷键:

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

注意:该快捷方式也会重复行,因此,如果您安装了它,请删除以前的ctrl+ d快捷键copyLinesDownAction(如果您之前曾这样做过),否则重复选择会出错。


我对“复制行向下”快捷方式感到沮丧,该快捷方式的行为与Sublime Text / Intellij Ctrl + D功能完全不同(它复制了整行,而不仅仅是复制了所选内容)。感谢您指出此插件!
TimothéMalahieude

我本来打算放弃vscode并安装atom,但是此扩展阻止了我。vscode的默认重复功能达不到要求。在这方面,原子要好得多。
维克兰特

31

在VScode,他们称这Copy Line UpCopy Line Down

从菜单转到:

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

为此,请检查已分配的键盘快捷方式,或者调整您的键盘快捷方式。

有时,默认分配的快捷方式可能不起作用,主要是因为操作系统。

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

在此处输入图片说明


24

VSCode中 Ctrl + CCtrl+V复制下面的整行。

我更喜欢这个而不是公认的答案,因为它只需要一只手就能做到,而且感觉更自然。

可接受的答案可能会对大多数人Down有用,但是位于键盘的另一侧。因此,您有两种选择,双手都可以使用(左手:L Shift+ L Alt+右手:)Up/Down,也可以单手使用右R Shift+ R Alt+ Up/Down。我认为第二种选择很奇怪。我宁愿使用我的手自然放在键盘上的选项,如果用一只手,甚至更好。


7
这样做的主要问题是您松开了剪贴板上的内容
克里斯(Chris)


12

请注意,对于Ubuntu用户(<= 17.4),Unity使用CTRL+ ALT+ SHIFT+ Arrow Key在虚拟工作区之间移动程序,这与VS Code快捷方式冲突。您需要重新绑定editor.action.copyLinesDownActioneditor.action.copyLinesUpAction避免冲突(或更改工作空间的键绑定)。

对于使用GNOME的Ubuntu 17.10+,似乎GNOME 不会根据其文档以相同的方式使用此键绑定,尽管如果在17.10上使用香草工作区的人可以确认这一点,则可能对将来的求职者有所帮助。


我在Ubuntu 19.10上,并且Ctrl + Alt + Down仍在工作空间之间移动。
BeeOnRope

9
  • 对于已迁移到VSCode的Jetbrains IDE用户,没有问题。

  • 安装:
    1)JetBrains IDE Keymap :扩展
    2)vscode-intellij-idea-keybindings 扩展 (Preferred)

  • 使用这个Intellij Darcula Theme扩展

  • 键盘映射涵盖了VS Code的大多数键盘快捷键,并使VS Code更像“ JetBrains IDE like ”。

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


7

对于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更改Visual Studio代码的键盘快捷键绑定,然后在托盘中键入open键盘快捷键,然后按Enter,这样将打开新文件(键盘快捷键文件), 您可以查看其上的所有快捷键并可以通过在相应的键绑定上单击两次,然后输入自己的键绑定来更改键绑定,最后按Enter键。

希望这会帮助到别人!




1

对于Fedora 29工作站(Gnome 3.30.2)和Ubuntu用户。

取消绑定不必要的左/右工作区键盘组合,按终端列出它们

$ gsettings list-recursively | grep -E "org.gnome.desktop.wm.keybindings move-to-workspace-|org.gnome.desktop.wm.keybindings switch-to-workspace-"

解除绑定

$ gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "[]"
$ gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "[]"
$ gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-left "[]"
$ gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-right "[]"

重置重复的快捷方式

  • Super + Pgdown / PgUp,Ctrl + Alt + DownArrow / UpArrow
  • Super + Shift + PgDown / PgUp,Ctrl + Alt + Shift + DownArrow / UpArrow

只需在“设置”>“设备”>“
仅键盘”中仅使用一个快捷方式即可将它们重置为仅使用快捷方式再次输入,以Super + PgUp作为“移动到上方工作区”为例。

在此处输入图片说明

现在,在fedora29中使用较少的重复快捷方式,用于Linux的所有vscode快捷方式都必须能正常工作



0

对于Linux用户:我注意到您在Linux上经常需要使用win密钥。对于Windows组合是:
ctrl+ shift + alt+up

然后对于Linux一样,只需添加win密钥:
ctrl+ shift + win+ alt+up

我注意到现在有几个连击。说ctrl+ alt + L锁定Linux,但ctrl+ win + alt+ L对于Intellij格式的代码。在Windows只是ctrl+ alt + L格式的代码。


0

只需转到文件->首选项->键盘快捷键即可在其中更改所需的任何快捷键。搜索重复项并将其更改为您在其他编辑器中始终使用的内容。我改为ctrl + D

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.