如何使用vscode在新行中插入代码段?

时间:2018-12-03 17:56:58

标签: visual-studio-code code-snippets

我正在尝试为python创建一个vscode代码段。 假设我有一行这样的代码:

my_var = call_some_function()

我想双击my_var以将其选中,然后按一个键,它将产生以下结果:

my_var = call_some_function()
LOGGER.debug("my_var: %s", my_var)
<cursor is here>

它也应该适用于表达式,例如如果我在这一行中选择“ x + y + z”并按以下键:

call_function(x + y + z)

它应该产生:

call_function(x + y + z)
LOGGER.debug("x + y + z: %s", x + y + z)
<cursor is here>

显然,使用调试器更好。但是有时您不能使用调试器。

2 个答案:

答案 0 :(得分:1)

正如@Alex的链接所暗示的,我认为您将需要使用宏扩展才能使其正常工作。我更喜欢multi-command,因为它具有可用的间隔延迟(对于某些宏,但不是您的宏,这是绝对必要的。)

在您的设置中:

"multiCommand.commands": [

    {
      "command": "multiCommand.debug",

      "sequence": [
        "editor.action.clipboardCopyAction",
        "editor.action.insertLineAfter",
        {
          "command": "editor.action.insertSnippet",
          "args": {
            "snippet": "LOGGER.debug(\"$CLIPBOARD: %s\", $CLIPBOARD)\n$0"
          }
        },
      ]
    }
]

这将首先将您选择的内容复制到剪贴板,以便稍后供片段使用。然后在下面插入一个空行,并在其中插入代码段(以防下面的行已包含一些代码)。

使用键盘绑定触发该事件:

{
    "key": "ctrl+alt+d",
    "command": "multiCommand.debug",
}

它适用于您的两个示例。

答案 1 :(得分:0)

这并非完全是所要的,但是使用$ CLIPBOARD变量可以解决此问题:

"log-clipboard": {
    "prefix": "log-clipboard",
    "body": [
        "LOGGER.debug('$CLIPBOARD: %s', $CLIPBOARD)",
        "$0"
    ],
    "description": "Log an expression from the clipboard"
}

要使用:

  1. 选择要记录的内容,然后单击“复制”
  2. 转到您要记录的地方
  3. 输入对数剪贴板,然后按Enter键

非常接近。