Wrap Selection Snippet on Visual Studio Code (vscode)

后端 未结 6 1968
暖寄归人
暖寄归人 2020-12-31 06:33

I want to create an snippet when triggered it will surround the given text. Currently my snippet is:

{ 
  \"Function Creator Helper\": {
    \"prefix\": \"_w         


        
相关标签:
6条回答
  • 2020-12-31 06:41

    I was just struggling with this myself. In order to get this to work, the only thing you have to do is press F1, run the Insert Snippet command and then select your snippet from the list.

    0 讨论(0)
  • 2020-12-31 06:45

    ${TM_SELECTED_TEXT} does not work for me either.

    ${selectedText} has been added as a Snippet Editor Variable: https://github.com/Microsoft/vscode/pull/39483#issuecomment-383552677

    Example:

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

    At this time it is not correctly documented: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables

    NOTE: In a multi-line selection, ${selectedText} is truncated to the first line. An alternative is to use the the clipboard and the ${CLIPBOARD} variable. An extra step :(

    0 讨论(0)
  • 2020-12-31 06:52

    The currently selected text is exposed as ${TM_SELECTED_TEXT}, not $TM_SELECTED_TEXT.

    edit: As commented below, this is not the case for this particular use-case

    0 讨论(0)
  • 2020-12-31 06:54

    See https://stackoverflow.com/a/48676522/836330 Your example will work, as of vscode v1.49, as you have it. Vscode snippets have been updated to "remember" your selected text even though you seemingly overwrite it with your snippet prefix.


    Older answer:

    You can use $TM_SELECTED_TEXT if you trigger it with a hotkey:

    {
      "key": "cmd+k 1",
      "command": "editor.action.insertSnippet",
      "when": "editorTextFocus",
      "args": {
        //  "langId": "csharp",
        "name": "Function Creator Helper"
      }
    }
    
    0 讨论(0)
  • 2020-12-31 07:03

    from Mitches example:

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

    from the article: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables the docs must have been ahead of the release.

    This works fine in vscode v1.30.2

    0 讨论(0)
  • 2020-12-31 07:06

    If somebody wants to know, it works like that for me :

    I created two same snippet which only matches when I'm in html or php file (just create two snippets files in your snippets folder "php.json" and "html.json" it works for any languages) and added this code inside :

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

    The ${TM_SELECTED_TEXT} tag works when you select some text and trigger your snippet by the Insert Snippet command, you can't just write on selected text.

    When you want to use this, select the text you want in your snippet, press Ctrl + Shift + P and select Insert snippet then, type the name of your snippet, press enter and there you go !

    0 讨论(0)
提交回复
热议问题