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

这是一个我经常使用的特性,如果没有它,我很难使用Visual Studio Code。


当前回答

注意,对于Ubuntu用户(<= 17.4),Unity使用CTRL + ALT + SHIFT +箭头键在虚拟工作区中移动程序,这与VS Code快捷键冲突。您需要重新绑定editor.action.copyLinesDownAction和editor.action.copyLinesUpAction以避免冲突(或更改您的工作区键绑定)。

对于使用GNOME的Ubuntu 17.10+,根据它的文档,GNOME似乎没有以同样的方式使用这个键绑定,尽管如果在17.10上使用香草工作区的人可以确认这一点,这可能对未来的答案搜索者有帮助。

其他回答

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

适用于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/ upparrow Super+Shift+PgDown/PgUp, Ctrl+Alt+Shift+DownArrow/ upparrow

它们可以很容易地重置工作,只有一个快捷方式在设置>设备>键盘 以“移动到上面的工作区”为例,只需再次输入Super+PgUp。

现在在fedora29中有了更少重复的快捷方式,linux上的所有vscode快捷方式都可以正常工作

问题

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

解决方案

然而,一个简单的解决方法是简单的CTRL+C(复制整行)和CTRL+V(将复制的行粘贴到新的行上)…实际上,给你同样的结果。

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

从vscode市场安装插件重复选择或行

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

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

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

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

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

So,

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


另外,这里有一个推荐的VS Code扩展列表,可以让你从WebStorm/Phpstorm过渡得更容易。