在我的自定义代码段中使用TM_SELECTED_TEXT

问题描述 投票:4回答:4

随着2016年11月(版本1.8)版本的VSCode Snippet Variables现在得到支持,特别是TM_SELECTED_TEXT。

这让我感到高兴,因为我在Sublime Text和TextMate中大量使用了这些。

我无法弄清楚如何让它在VSCode中工作。我已经创建了他们使用的代码片段作为示例:

"in quotes": {
    "prefix": "inq",
    "body": "'${TM_SELECTED_TEXT:${1:type_here}}'"
}

然后我输入一些文字,突出显示它,这就是事情开始破裂的地方。

想法是突出显示一些文本,运行片段,然后用突出显示的文本替换${TM_SELECTED_TEXT:${1:type_here}}。我遇到的问题是,要运行代码片段,您需要输入prefix值(在本例中为inq)来运行覆盖突出显示的文本的片段,这会破坏所有内容。

在Sublime / Textmate中,我从键盘组合中启动了片段,使我的文字突出显示。

在VSCode中,是否有办法使其按原样工作或从Sublime中提供的组合键启动片段?

visual-studio-code
4个回答
3
投票

突出显示单词后,按F1并运行“插入代码段”命令,然后在列表中选择您的代码段。

您还可以通过转到文件>首选项>键盘快捷键来编辑键绑定,并为“editor.action.showSnippets”命令添加一些快捷方式,如下所示:

{
    "key": "ctrl+alt+s",
    "command": "editor.action.showSnippets",
    "when": "editorTextFocus"
}

5
投票

从v1.20开始,随着新变量$ CLIPBOARD的添加,这变得更加容易,请参阅new snippet variables。因此无需分配和运行快捷方式 - 但您必须保存到剪贴板CTRL-C。

你的例子现在可能是:

"in quotes": {
    "prefix": "inq",
    "body": "'$CLIPBOARD:${1:type_here}}'"
}

注意不需要括号,如$ {CLIPBOARD}。在我的测试中使用或不使用括号。


1
投票

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

根据此主题,您可以通过提供args将精确的片段分配给键绑定。引导媒体查询的键绑定示例

{
    "key": "ctrl+alt+b",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
        "name": "bsup"
    }
},
{
    "key": "ctrl+alt+shift+b",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
        "name": "bsup_copy"
    }
},

摘录示例

"bsup": {
    "prefix": "bsup",
    "body": [
        "@include media-breakpoint-up(md){",
        "\t${TM_SELECTED_TEXT}",
        "}"
    ],
    "description": "Bootstrap media up"
},
"bsup_copy": {
    "prefix": "bsup_copy",
    "body": [
        "${1:${TM_SELECTED_TEXT}}",
        "@include media-breakpoint-up(md){",
        "\t${2:${TM_SELECTED_TEXT}}",
        "}"
    ],
    "description": "Bootstrap media up + copy selected text"
},

0
投票

使用来自https://code.visualstudio.com/docs/editor/userdefinedsnippets的文档,我能够自定义片段,我使用'环绕'扩展,并可以将我自己的片段放入settings.json,如下所示:

"html_h3-name": {
  "label": "h3",
  "description": "wrap by h3 with <a name=''>, top",
  "snippet": "<h3><a name=\"${TM_SELECTED_TEXT/[\\s]/-/g}\"></a>$TM_SELECTED_TEXT\n\t<a class=\"small\" href=\"#top\">top</a>\n</h3>"

},

它在VSCode中获取突出显示的代码,并使用名称链接从中创建h3头:

it converts  'aaa bbb ccc' to 
<h3><a name="aaa-bbb-ccc"></a>aaa bbb ccc
    <a class="small" href="#top">top</a>
</h3> 
© www.soinside.com 2019 - 2024. All rights reserved.