VSCode 复制并粘贴 1 行,不添加换行符

VSCode copy and paste 1 line without newline character being prepended

在 VScode 中,当您复制一行文本,然后将光标放在引号中间并按 Ctrl+V 时,它会将新行粘贴到您想要的位置上方。

在 IntelliJ 和 PyCharm 中,当您使用 Ctrl+C 复制一行代码而不选择任何文本时,它们会智能地删除内存中字符串末尾的 \n 字符。因此,当您将它粘贴在引号中间时,您会得到所需的行为。

由于 VS 团队不太可能很快解决这个问题,我想知道是否有人有它的宏。

https://github.com/Microsoft/vscode/issues/61840

组合键可以帮助您:

  1. 主页
  2. Shift + End
  3. Ctrl + Alt + C

但是因为你只想用 Ctrl + Alt + C,您可以安装名为 macros 的扩展来制作一个宏,记录多个组合键。

通过将它们添加到您的 settings.json:

创建您自己的自定义宏
"macros": {
    "copyWithoutNewLine": [
        "cursorHome",
        "cursorEndSelect",
        "editor.action.clipboardCopyAction",
        "cancelSelection",
        "cursorUndo",
        "cursorUndo",
        "cursorUndo"
    ]
}

创建的宏可以有一个自定义名称,在这个例子中是copyWithoutNewLine。并且这个宏执行上述所有命令来复制行。

创建宏后,需要将其添加到keybindings.json到运行中:

{
    "key": "ctrl+alt+c",
    "command": "macros.copyWithoutNewLine",
    "when": "editorTextFocus && !editorHasSelection"
}

当按下Ctrl+Alt+C组合键时,会复制它没有换行,您可以将其粘贴到任何您想要的地方。

我自己也为此苦苦挣扎了很长时间,终于偶然发现了 解决方案。将这些行添加到 keybindings.json:

{
    "key": "cmd+alt+ctrl+v", // insert your desired shortcut here
    "command": "editor.action.insertSnippet",
        "args": {
            "snippet": "$CLIPBOARD"},
    "when": "inputFocus"
},

现在,无论它是如何复制的,按 cmd+option+ctrl+v(或您定义的任何快捷方式)应该粘贴时不带换行符。

有关说明以及您可以使用代码片段做的更多有趣的事情,请参阅 https://code.visualstudio.com/docs/editor/userdefinedsnippets#:~:text=In%20Visual%20Studio%20Code%2C%20snippets,%3A%20Enable%20it%20with%20%22editor