Лучший способ определить фрагменты многострочного кода в коде 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 - это расширение, которое вам нужно.
- установить расширение.
- Выделите код, необходимый для создания фрагмента.
- нажмите Ctrl+ Shift+P и введите "Создать фрагмент" в палитре команд и нажмите клавишу ВВОД.
- выберите язык, для которого вы хотите создать фрагмент (например:-CPP), затем введите имя фрагмента, введите ярлык фрагмента, а затем введите описание фрагмента.
Теперь тебе пора. Введите ярлык фрагмента в редакторе, который вы ввели на шаге 4, и выберите прогноз (если прогноз не приходит, нажмите Ctrl+ пробел), который идет первым.
Надеюсь это поможет:)
Примечание: перейдите в Файл-> Настройки-> Пользовательские фрагменты. Затем выберите язык, на котором вы создали фрагмент. Вы найдете фрагмент там.
Я также не могу найти хороший способ создания многострочных фрагментов. Вероятно, это одна из функций, которую я хотел бы видеть улучшенной больше всего. Как подсказывает другой ответ, есть несколько расширений, которые помогут в создании Snippet (как этот и этот). Однако, они не избегают буквальных знаков доллара, и отступы не велики.
Просматривая ответы на эти вопросы, я наткнулся на перо Дениса Малиночкина (ссылка на этот вопрос). Однако, это также не избежало знаков доллара должным образом, поэтому я раздвоил его и добавил эту строку для обработки буквенных знаков доллара. Вот оно: https://codepen.io/cbejensen/pen/WXLxaE
Надеюсь, это поможет!
PS - это строка, которую я добавил:
line = line.replace(new RegExp(/\$/, 'g'), '\\$');
Я создал расширение для хранения фрагментов в файле уценки:
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}"
]
}
Конечно, для более длинных фрагментов это все еще не очень удобный (возможно, даже хуже) вариант. Я не уверен, что есть лучший способ прямо сейчас.