首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在自定义代码段中使用TM_SELECTED_TEXT

在自定义代码段中使用TM_SELECTED_TEXT
EN

Stack Overflow用户
提问于 2016-12-16 19:15:25
回答 2查看 6.3K关注 0票数 12

随着2016年11月的发布(版本1.8),VSCode 片段变量现在得到了支持,特别是TM_SELECTED_TEXT。

这让我很高兴,因为我在崇高文本和TextMate中都大量使用了这些内容。

我不知道如何让它在VSCode中工作。我已经创建了它们用作示例的代码片段:

代码语言:javascript
运行
复制
"in quotes": {
    "prefix": "inq",
    "body": "'${TM_SELECTED_TEXT:${1:type_here}}'"
}

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

其想法是突出显示一些文本,运行片段,然后用突出显示的文本替换${TM_SELECTED_TEXT:${1:type_here}}。我遇到的问题是,要运行代码段,需要键入prefix值(在本例中为inq),以运行代码段,该代码段会重写突出显示的文本,这会将所有事情搞砸。

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

在VSCode中,是否有一种方法可以按原样工作,或者从一个键组合中启动代码片段,比如Sublime中可用的键组合?

EN

回答 2

Stack Overflow用户

发布于 2018-07-11 08:32:55

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

根据这个线程,您可以通过提供args为密钥绑定分配精确的代码段。引导媒体查询的键绑定示例

代码语言:javascript
运行
复制
{
    "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"
    }
},

片段示例

代码语言:javascript
运行
复制
"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"
},

keybindings.jsonUPD: -您可以直接在中定义代码片段,这在某些情况下对我来说甚至更方便。

代码语言:javascript
运行
复制
{
  "key": "cmd+shift+c",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
     "snippet": "console.log('${TM_SELECTED_TEXT}', $TM_SELECTED_TEXT$1);"
  }
}
票数 2
EN

Stack Overflow用户

发布于 2019-03-28 16:19:07

通过使用来自https://code.visualstudio.com/docs/editor/userdefinedsnippets的文档,我能够自定义代码段,我使用的是“环绕声”扩展,并且可以将自己的代码片段放入settings.json中,如下所示:

代码语言:javascript
运行
复制
"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头:

代码语言:javascript
运行
复制
it converts  'aaa bbb ccc' to 
<h3><a name="aaa-bbb-ccc"></a>aaa bbb ccc
    <a class="small" href="#top">top</a>
</h3> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41191054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档