Visual Studio代码上的Wrap Selection Snippet(vscode)

时间:2016-12-20 23:48:32

标签: visual-studio-code

我想在触发时创建一个片段,它会围绕给定的文字。目前我的片段是:

{ 
  "Function Creator Helper": {
    "prefix": "_w",
    "body": [
      "public function $TM_SELECTED_TEXT () {",
      "  $1",
      "}",
    ],
    "description": "Creates a function given the text selection"
  }
}

结果如下:

Wrapping snippet

我的工作是:

  1. 选择文字。
  2. 写前缀(_w
  3. 按Tab
  4. 结果如下:

    public function  () {
    
    }
    

    但我期待

    public function person () {
    
    }
    

    关于如何制作此片段或如何正确触发它的任何想法?

6 个答案:

答案 0 :(得分:6)

当前选定的文字显示为${TM_SELECTED_TEXT},而不是$TM_SELECTED_TEXT

编辑:如下所述,对于此特定用例

,情况并非如此

答案 1 :(得分:3)

我自己就是在努力解决这个问题。为了实现这一点,您唯一需要做的就是按F1,运行Insert Snippet命令,然后从列表中选择您的代码段。

答案 2 :(得分:1)

${TM_SELECTED_TEXT}也不适合我。

${selectedText}已添加为代码段编辑器变量: https://github.com/Microsoft/vscode/pull/39483#issuecomment-383552677

示例:

"JS Block Quote": {
    "prefix": "c2",
    "body": [
        "/* ${selectedText} */",
    ],
    "description": "JS Block Quote"
}

目前,此文件未正确记录: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables

注意:在多行选择中,${selectedText}被截断到第一行。一种替代方法是使用剪贴板和${CLIPBOARD}变量。 额外的步骤:(

答案 3 :(得分:1)

如果有人想知道,它对我来说就是这样:

我创建了两个相同的代码段,仅当我使用html或php文件时才匹配(只需在您的代码段文件夹“ php.json”和“ html.json”中创建两个代码段文件即可,适用于所有语言),并添加了此代码段里面的代码:

   "unicommentary": {
        "prefix": "unicommentary",
        "body": "<?php /* ${TM_SELECTED_TEXT} */ ?> ${0}",
        "description": "Creates a universal comment to disable both html and php."
    }

${TM_SELECTED_TEXT}标签在您选择一些文本并通过Insert Snippet命令触发代码段时起作用,您不仅可以在所选文本上书写。

要使用此功能,请在代码段中选择所需的文本,然后按 Ctrl + Shift + P 并选择{{ 1}},然后输入代码段的名称,按Enter键,然后就可以了!

答案 4 :(得分:0)

以Mitches为例:

"JS Block Quote": {
    "prefix": "c2",
    "body": [
        "/* $TM_SELECTED_TEXT */",
    ],
    "description": "JS Block Quote" }

来自文章:https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables 文档必须早于发行版。

这在vscode v1.30.2中很好用

答案 5 :(得分:0)

如果您通过热键触发$TM_SELECTED_TEXT,则可以使用它:

{
  "key": "cmd+k 1",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    //  "langId": "csharp",
    "name": "Function Creator Helper"
  }
}