Лучший способ определить фрагменты многострочного кода в коде VS?

В Sublime Text вы можете определять фрагменты многострочного кода с пробелами в файле фрагмента при написании обычного документа, но когда дело доходит до похожих многострочных фрагментов в коде Visual Studio, насколько я знаю, это должен быть JSON-запись, в которой необходимо разбить каждую строку на строковый элемент в списке в двойных кавычках или использовать явные символы ASCII переноса строки (\n) в одной строке.

Интересно, есть ли лучшие способы определения фрагментов кода, особенно когда он длинный?

9 ответов

Вы можете сделать это так:

  "Create for loop":{
    "prefix": "mkfor",
    "body":[
      "for(int i = 0; i < 3; i++)",
      "{",
      "   //code goes here",
      "}"
    ],
   "description": "Creates a for loop"
  }

или если вы установите Easy Snippet Maker Расширение, вы можете создавать свои фрагменты, выделив текст.

Snippet-creator - это расширение, которое вам нужно.

  1. установить расширение.
  2. Выделите код, необходимый для создания фрагмента.
  3. нажмите Ctrl+ Shift+P и введите "Создать фрагмент" в палитре команд и нажмите клавишу ВВОД.
  4. выберите язык, для которого вы хотите создать фрагмент (например:-CPP), затем введите имя фрагмента, введите ярлык фрагмента, а затем введите описание фрагмента.

Теперь тебе пора. Введите ярлык фрагмента в редакторе, который вы ввели на шаге 4, и выберите прогноз (если прогноз не приходит, нажмите Ctrl+ пробел), который идет первым.

Надеюсь это поможет:)

Примечание: перейдите в Файл-> Настройки-> Пользовательские фрагменты. Затем выберите язык, на котором вы создали фрагмент. Вы найдете фрагмент там.

Я также не могу найти хороший способ создания многострочных фрагментов. Вероятно, это одна из функций, которую я хотел бы видеть улучшенной больше всего. Как подсказывает другой ответ, есть несколько расширений, которые помогут в создании Snippet (как этот и этот). Однако, они не избегают буквальных знаков доллара, и отступы не велики.

Просматривая ответы на эти вопросы, я наткнулся на перо Дениса Малиночкина (ссылка на этот вопрос). Однако, это также не избежало знаков доллара должным образом, поэтому я раздвоил его и добавил эту строку для обработки буквенных знаков доллара. Вот оно: https://codepen.io/cbejensen/pen/WXLxaE

Надеюсь, это поможет!

PS - это строка, которую я добавил:

line = line.replace(new RegExp(/\$/, 'g'), '\\$');

Я создал расширение для хранения фрагментов в файле уценки:

demo_image

https://marketplace.visualstudio.com/items?itemName=usernamehw.snippets-in-markdown

Я использую этот форматировщик JSON Escape (?) для обработки большого количества HTML во фрагмент:

https://www.freeformatter.com/json-escape.html

(Результат этого процесса должен быть добавлен в кавычках "..." в "тело" объекта JSON.

Нажмите cmd+shift+p на компьютере Mac и найдите "Настроить пользовательские сниппеты", затем создайте файл и вставьте его под кодом json. укажите префикс, текст и описание. Ссылка: https://code.visualstudio.com/docs/editor/userdefinedsnippets

{
    "forLoop": {
        "prefix": "forLoop",
        "body": [
            "for (const ${2:element} of ${1:array}) {",
            "\t$0",
            "}"
        ],
        "description": "For Loop"
    },

    "reactClass": {
        "prefix": "reactClass",
        "body": [
            "import React from 'react';",
            "class ${1:ComponentName} extends React.Component {",
            "\t$0constructor(props) {",
            "\t$0\t$0super(props)",
            "",
            "render() {",
            "return (<div> ${2:Component} </div>)",
            "}",
            "export default ${3:ComponentName}"
        ],
        "description": "For React Component class"
    },
    "function": {
    "scope": "javascript,typescript",
    "prefix": "function",
    "body": [
        "import React from 'react';",
        "import withStyles from '@material-ui/core/styles/withStyles';",
        "import { makeStyles } from '@material-ui/core/styles';",
        "",
        "import Styles from  './style.js';",
        "",
        "const useStyles = makeStyles(Styles);",
        "",
        "function $1(props){",
        "const classes = useStyles();",
        "\treturn (",
        "\t\t<React.Fragment>",
        "\t\t\t<div className={classes.root}>",
        "\t\t\t\t$1",
        "\t\t\t</div>",
        "\t\t</React.Fragment>",
        "\t)",
        "}",
        "export default withStyles(useStyles)($1);"
    ],
    "description": "react class"
  }
}

Я написал сценарий, с помощью которого вы можете создавать свои собственные сложные фрагменты. просто используя файл, который вы хотите. поэтому вам не нужно писать исходный код в виде строки или массива строк. https://github.com/banxi1988/vscode-snippets-ext-template

По состоянию на 31 октября 2023 года, используя VSCode 1.83.1, мне удалось создать в VSCode эквивалент встроенного ярлыка «psvm» JetBrains IntelliJ для Java с помощью следующей записи в файле java.json, расположенном в каталоге %AppData%\Код\Пользователь\фрагменты\ :

      "public static void main": 
{
    "prefix": "psvm",
    "description": "Creates an empty static main method",
    "body" : [
    "public static void main(String[] args)",
    "{",
    "\t$0",
    "}"
    ]
}

где вы должны разбить каждую строку на строковый элемент в кавычках в списке.

Это не совсем верно, вы можете использовать одну строку с \n символы, например:

"For loop": {
    "prefix": "for",
    "body": [
        "for (int i = 0; i < $0; i++) {\n\n}"
    ]
}

Конечно, для более длинных фрагментов это все еще не очень удобный (возможно, даже хуже) вариант. Я не уверен, что есть лучший способ прямо сейчас.

Другие вопросы по тегам