VS代码片段到当前行下方的console.log选择

squ*_*y06 5 javascript visual-studio-code vscode-extensions

这是我想要实现的(在编辑器中选择了t):

摘要之前:

var t = 'Foobar';
Run Code Online (Sandbox Code Playgroud)

摘录后:

var t = 'Foobar';
console.log('t', t);
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?这是我尝试做的事情:

"log_selection": {
    "prefix": "cls",
    "body": [
        "console.log('$TM_SELECTED_TEXT', $TM_SELECTED_TEXT);"
    ],
    "description": "Logs selected text"
}
Run Code Online (Sandbox Code Playgroud)

但这只是将摘要替换为摘要。我认为我可以在这里使用TM_CURRENT_LINE,但是我不知道该行中剩余的文本应该怎么做。

您对此有什么想法吗?摘录也许不可能吗?如果是这样,我如何达到预期的效果?

谢谢。

Ale*_*lex 7

扩展(在 1 个键绑定中执行多个命令)。

settings.json

"macros": {
    "snippetWithDescription": [
        "editor.action.clipboardCopyAction",
        "editor.action.insertLineAfter",
        {
            "command": "editor.action.insertSnippet",
                "when": "editorTextFocus",
                "args": {
                    "snippet": "console.log('$CLIPBOARD', $CLIPBOARD)$0"
                }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

keybindings.json

{
    "key": "ctrl+shift+;",
    "command": "macros.snippetWithDescription"
}
Run Code Online (Sandbox Code Playgroud)

PS,如果在snippetWithDescription:开头添加另一个命令,您甚至可以省略选择部分"editor.action.addSelectionToNextFindMatch",。只需将光标放在单词旁边并点击热键。