如何将多行片段的一部分粘贴到特定行,其余部分粘贴到另一行
How to paste part of a multi-line snippet to a specific line and the rest to another line
我想为我自己的用途创建一个自定义代码段,我目前想为@emotion/core 制作一个代码段。
我一直希望 /** @jsx jsx */
位于我的 jsx 文件之上。因此,当我在第 9 行导入我的模块时,import {css, jsx} from '@emotion/core
在第 9 行,/** @jsx jsx */
在第 0 行。
我该如何实现?
当前片段:
"Import emotion":{
"prefix":"ime",
"description": "Import emotion",
"body":
[
"/** @jsx jsx */",
"import {css, jsx} from '@emotion/core';"
]
},
您必须将代码片段分解成单独的命令才能在中间步骤中移动光标。这将需要像 multi-command.
这样的宏扩展
将此放入您的 settings.json:
"multiCommand.commands": [
{
"command": "multiCommand.insertImports",
"sequence": [
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "import {css, jsx} from '@emotion/core';"
}
},
// "editor.action.setSelectionAnchor", // see note below
"cursorTop",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "/** @jsx jsx */\n"
}
},
// "editor.action.goToSelectionAnchor",
// "editor.action.cancelSelectionAnchor",
"cursorDown"
]
}
]
和一些键绑定来触发该宏:
{
"key": "ctrl+shift+i", // whatever keybinding you wish
"command": "extension.multiCommand.execute",
"args": {
"command": "multiCommand.insertImports"
},
"when": "editorTextFocus"
},
anchor
命令注意事项
editor.action.setSelectionAnchor
editor.action.goToSelectionAnchor
editor.action.cancelSelectionAnchor
这些命令位于 Insiders' Build 中,因此大概在 2020 年 6 月上旬的 v1.46 版本中。它们位于宏中只是为了方便 return 将光标移动到您开始的位置。出于某种原因,命令 workbench.action.navigateToLastEditLocation
在这里对我不起作用 - 我认为这就足够了。
如果没有这些新命令,光标不会 return 到您开始的位置 - 也许这对您来说不是问题。无论如何,他们很快就要来了。一旦你有了版本,它们就包含在取消注释这些命令中。这是使用这些命令的演示:
我想为我自己的用途创建一个自定义代码段,我目前想为@emotion/core 制作一个代码段。
我一直希望 /** @jsx jsx */
位于我的 jsx 文件之上。因此,当我在第 9 行导入我的模块时,import {css, jsx} from '@emotion/core
在第 9 行,/** @jsx jsx */
在第 0 行。
我该如何实现?
当前片段:
"Import emotion":{
"prefix":"ime",
"description": "Import emotion",
"body":
[
"/** @jsx jsx */",
"import {css, jsx} from '@emotion/core';"
]
},
您必须将代码片段分解成单独的命令才能在中间步骤中移动光标。这将需要像 multi-command.
这样的宏扩展将此放入您的 settings.json:
"multiCommand.commands": [
{
"command": "multiCommand.insertImports",
"sequence": [
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "import {css, jsx} from '@emotion/core';"
}
},
// "editor.action.setSelectionAnchor", // see note below
"cursorTop",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "/** @jsx jsx */\n"
}
},
// "editor.action.goToSelectionAnchor",
// "editor.action.cancelSelectionAnchor",
"cursorDown"
]
}
]
和一些键绑定来触发该宏:
{
"key": "ctrl+shift+i", // whatever keybinding you wish
"command": "extension.multiCommand.execute",
"args": {
"command": "multiCommand.insertImports"
},
"when": "editorTextFocus"
},
anchor
命令注意事项
editor.action.setSelectionAnchor
editor.action.goToSelectionAnchor
editor.action.cancelSelectionAnchor
这些命令位于 Insiders' Build 中,因此大概在 2020 年 6 月上旬的 v1.46 版本中。它们位于宏中只是为了方便 return 将光标移动到您开始的位置。出于某种原因,命令 workbench.action.navigateToLastEditLocation
在这里对我不起作用 - 我认为这就足够了。
如果没有这些新命令,光标不会 return 到您开始的位置 - 也许这对您来说不是问题。无论如何,他们很快就要来了。一旦你有了版本,它们就包含在取消注释这些命令中。这是使用这些命令的演示: