【问题标题】:How do I duplicate a line or selection within Visual Studio Code?如何在 Visual Studio Code 中复制行或选择?
【发布时间】:2015-07-24 02:05:43
【问题描述】:

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

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

【问题讨论】:

标签: editor visual-studio-code keyboard-shortcuts


【解决方案1】:

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

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

Windows:

Shift+Alt+向下Shift+Alt+向上

苹果机:

Shift+Option+向下Shift+Option向上

Linux:

Ctrl+Shift+Alt+向下Ctrl+Shift+Alt+上移

(对于 Linux,可能需要使用小键盘 DownUp

此外,命令editor.action.moveLinesUpActioneditor.action.moveLinesDownAction 是移动行的命令,它们绑定到 Alt+DownAlt +Up(Windows 和 Mac)和 Ctrl+DownCtrl+Up Linux。

【讨论】:

  • 似乎Alt+UpAlt+Down 会上下移动现有线路。不错
  • 工具 |选项 |环境 | VS2015中的键盘
  • 你知道如何“复制选择”吗?我找不到合适的命令:(
  • 那不一样。在这种情况下,当您选择 行尾 + 完整的下一行 时,它将复制 2 行(整个第一行,而不仅仅是 \r\n)。这很烦人:(
  • 在 Linux ctrl+shift+alt+down/up 上仅适用于数字键盘箭头键。
【解决方案2】:

您可以从

找到键盘快捷键

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

默认键盘快捷键是,

向下复制行操作 : 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 (command expandLineSelection) 将选择一行。重复 ctrl + L 选择其他行,使块选择变得容易。或者您可以使用鼠标进行粗略的块选择,然后按 ctrl+L 以包括末端。
  • 遗憾的是,默认 PDF 中根本没有任何关于 Alt+Shift+up/down 的快捷方式列表...不太正确,提到“多光标和选择”部分和“插入”光标上方/下方”动作!
【解决方案3】:

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

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

此扩展为 ctrl+d (Windows/Linux) 和 cmd+d (MacOS) 提供绑定)。自定义键盘快捷键Preferences -> Keyboard Shortcuts:

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

注意: 快捷方式也会重复行,所以如果您安装它,请删除您之前在 copyLinesDownAction 上的 ctrl+d 快捷方式(如果你之前做过)否则重复选择可能会出错。

【讨论】:

  • 我对“向下复制行”快捷方式感到沮丧,它的行为与 Sublime Text/Intellij Ctrl+D 功能不完全一样(它复制了整行而不是仅复制选择)。感谢您指出这个插件!
  • 我正要放弃 vscode 并安装 atom,但这个扩展阻止了我。 vscode 的默认重复功能不达标。 atom 在这方面要好得多。
【解决方案4】:

在 VScode 中,他们称之为 Copy Line UpCopy Line Down

从菜单中转到:

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

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

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

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

【讨论】:

    【解决方案5】:

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

    与公认的答案相比,我更喜欢这个,因为它只需要一只手就可以做到,而且感觉更自然。

    接受的答案可能对大多数人来说都是如此,但是 Down 位于键盘的另一侧。 所以你有两个选择,双手放在上面(左手:L Shift+L Alt+右手:Up/Down),或者单手使用右 R Shift+R Alt+Up/Down。在我看来,第二个选项感觉很奇怪。我宁愿使用我的手自然放在键盘上的选项,如果是一只手,那就更好了。

    【讨论】:

    • 主要问题是您丢失了剪贴板上的内容
    【解决方案6】:

    试试 ALT+SHIFT+UP/DOWN

    它对我有用!

    【讨论】:

      【解决方案7】:

      请注意,对于 Ubuntu 用户 (CTRL + ALT + SHIFT + 箭头键 kbd> 用于跨虚拟工作区移动程序,这与 VS Code 快捷方式冲突。您需要重新绑定 editor.action.copyLinesDownActioneditor.action.copyLinesUpAction 以避免冲突(或更改您的工作区键绑定)。

      对于使用 GNOME 的 Ubuntu 17.10+,根据其文档,似乎 GNOME does not use this keybinding in the same way,但如果有人在 17.10 上使用 vanilla 工作区可以确认这一点,它可能对未来的寻求答案者有所帮助。

      【讨论】:

      • 我在 Ubuntu 19.10 上,Ctrl+Alt+Down 仍在工作区之间移动。
      【解决方案8】:
      • 适用于迁移到 VSCodeJetbrains IDE 用户

      • 安装(任何人):

      1. JetBrains IDE 键盘映射:Extension
      2. vscode-intellij-idea-keybindings Extension (Preferred)
      • 使用这个Intellij Darcula Theme:Extension

      • keymap 覆盖了 VS Code 的大部分键盘快捷键,让 VS Code 更“JetBrains IDE like”。

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

      【讨论】:

      • 只需要 JetBrains IDE Keymap 扩展。这为您提供了熟悉的ctrl-D 快捷方式。
      • 帮帮我。谢谢朋友。
      【解决方案9】:

      对于Windows

      向上复制 - shift+alt+up

      向下复制 - shift+alt+down

      对于ma​​c

      向上复制 - shift+option+up

      向下复制 - shift+option+down

      对于linux

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

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

      注意:您可以更改 Visual Studio 代码的键盘快捷键键绑定 按 ctrl+shift+p,然后在托盘,然后按 Enter 所以将打开新文件(键盘快捷方式文件) 您可以看到所有快捷键,并且可以通过在相应的键绑定上单击两次然后输入您自己的键绑定,最后按 Enter 来更改键绑定。

      希望这会对某人有所帮助!

      【讨论】:

      • 这些建议都不适用于VS Ccode 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 有时是否可以成为移动目标。
      【解决方案10】:

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

      【讨论】:

      • 绝对是我现在的想法。我在 linux 上尝试了接受的答案,但它根本不起作用。编辑自己的快捷方式是一种很好的做法,也是一个更美好未来的新起点。 CTRL + D 是最直观、最简单的快捷命令。为什么......为什么...... CTRL + SHIFT + ALT + .. 请停下来,我的电脑在这样做后几乎关闭并重置。
      • 您需要在键盘快捷键列表中更改的命令称为:Duplicate Selection(editor.action.duplicateSelection)
      【解决方案11】:

      重复行:alt + shift + /

      上下移动:alt + /

      【讨论】:

        【解决方案12】:

        如果您来自 Sublime Text 并且不想重新学习新的键绑定,您可以使用 Visual Code Studio 的此扩展。

        VS Code 的 Sublime 文本键盘映射

        此扩展将最流行的 Sublime Text 键盘快捷键移植到 Visual Studio Code。安装扩展并重新启动 VS Code 后,您最喜欢的 Sublime Text 键盘快捷键现在可用。

        https://marketplace.visualstudio.com/items?itemName=ms-vscode.sublime-keybindings

        【讨论】:

          【解决方案13】:

          如果未选择任何内容或复制所选单词,此键盘映射将复制当前行

          1. 访问:

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

          2. 在右上角,点击Open Keyboard Shortcuts (JSON)

          3. 插入此键盘映射:

             {
               "key": "shift+alt+d",
               "command": "editor.action.duplicateSelection"
             }
            
          4. 使用 alt+向上/向下箭头 移动行(VS Code 的默认行为)。

          【讨论】:

          • 感谢分享!来自崇高的文字,这是无价的!​​span>
          【解决方案14】:

          Contextual Duplicate 扩展提出了直线复制(没有剪贴板步骤)。

          映射在ctrl+K D

          【讨论】:

            【解决方案15】:

            问题

            Ubuntu 上原来的“重复行向下”快捷方式似乎存在问题,主要是由于与操作系统上已经存在的与工作区相关的快捷方式冲突。

            解决方法

            但是,一个简单的解决方法是简单地 CTRL+C(复制整行)和 CTRL+V kbd>(将复制的行粘贴到新行上)...有效地为您提供相同的最终结果。

            【讨论】:

            • 这应该是正确的答案,因为它在 vscode vanilla 中开箱即用
            【解决方案16】:

            对于从 WebStorm/PhpStorm 迁移的用户,

            您可以安装 IntelliJ IDEA Keybindings 以继续使用几乎所有的键盘快捷键,就像在 Webstorm/Phpstorm 中一样。

            所以,

            • 重复行 => CTRL + D
            • 向上/向下移动一行/选择代码 => Ctrl + Shift + UP/DOWN

            另外,这里有一个 recommended VS Code extensions 的列表,这将使您从 WebStorm/Phpstorm 的过渡变得更加容易。

            【讨论】:

              【解决方案17】:

              适用于 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 中使用较少重复的快捷方式,所有 vscode shortcuts for linux 必须正常工作

              【讨论】:

                【解决方案18】:

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

                那么对于 Linux 也是一样的,只需添加 win 键:
                ctrl + shift + win + alt + 向上

                我现在在几个连击中注意到了这一点。说 ctrl + alt + L 锁定 Linux,但是 ctrl + win + alt + L 用于 Intellij 格式代码。 Windows下就是ctrl + alt + L来格式化代码。

                【讨论】:

                  【解决方案19】:

                  在我的上一个版本 Visual Studio Code 1.30.2 它会自动变成


                  ctrl + D

                  【讨论】:

                  • 在 vscode 中,这会突出显示光标下的单词。也许 Notepad++ 使用了 ctrl+D 快捷键。只是凭记忆。
                  猜你喜欢
                  • 1970-01-01
                  • 2017-07-27
                  • 2016-09-25
                  • 2021-06-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-12-15
                  • 1970-01-01
                  • 2023-04-08
                  相关资源
                  最近更新 更多