Вы не можете поместить регулярное выражение во фрагмент, кроме как для преобразования одной из встроенных переменных. Если MyClass
уже есть в буфере обмена, вы можете просто использовать $CLIPBOARD
в своем фрагменте:
"body": "export default connect(mapStateToProps, mapDispatchToProps)($CLIPBOARD)"
Предполагая, что имя класса не всегда должно быть всегда в буфере обмена, существует другой хитрый способ найти имя класса, выбрать его и скопировать в буфер обмена, чтобы его можно было использовать в фрагменте как $CLIPBOARD
,
Для начала вам понадобится расширение макроса, например multi-command .
Во-вторых, этот параметр в settings.json:
"multiCommand.commands": [
{
"command": "multiCommand.regexSnippet", // name of the macro to use a keybinding
"interval": 1000, // delay between the following commands, left long to watch it work
// you don't need any interval, that option can be commented out
"sequence": [
// first command, on a blank line type out a regular expression
{
"command": "type",
"args": {
"text": "(?<=class )(.*)(?= extends)"
}
},
// select and cut that regex
"cursorHomeSelect",
"editor.action.clipboardCutAction",
// now $CLIPBOARD has your class name on it
// open the find widget
"actions.find",
// "toggleFindRegex", // you should have the find regex option already selected
// paste the regex into the find widget
"editor.action.clipboardPasteAction",
// select and copy the match that the regex finds
"editor.action.selectAllMatches",
"editor.action.clipboardCopyAction",
// go back to where you were in the code to insert the snippet
"workbench.action.navigateToLastEditLocation",
{
"command": "editor.action.insertSnippet",
"args": {
// "snippet": "export default $1($2, $3)($CLIPBOARD)",
// use the above if those values are not pre-determined like in your question
"snippet": "export default connect(mapStateToProps, mapDispatchToProps)($CLIPBOARD)"
}
}
]
}
],
В-третьих, некоторые комбинации клавиш для запуска этого макроса:
{
"key": "shift-alt-2",
"command": "multiCommand.regexSnippet"
},
Примечание: вы запускаете макрос, не фрагмент - поэтому нет смысла.
Вот рисунок с длинным интервалом, чтобы вы могли видеть шаги в действии («Режим переключения экрана» для просмотра клавиш управления):
Пара важных моментов:
Вы можете удалить или закомментировать параметр интервала, и он будет мгновенным.
Макрос предполагает, что у вас уже выбрана опция find regex - что у меня всегда так. К сожалению, есть команда для переключения опции find regex , но нет команды, чтобы убедиться, что она включена.
Макрос выглядит огромным, но это наполовину пояснительные комментарии.
Очевидно, что если в файле содержится более одного class MyClass extends
, этот макрос может не работать.
Вы должны запустить макрос (с выбранной связью клавиш) в пустой строке - иначе первоначальный выбор регулярного выражения будет неправильным.
Дайте мне знать, если это работает для вас.