我想在触发时创建一个片段,它将包围给定的文本。目前我的片段是:
{
"Function Creator Helper": {
"prefix": "_w",
"body": [
"public function $TM_SELECTED_TEXT () {",
" $1",
"}",
],
"description": "Creates a function given the text selection"
}
}
这个结果:
我做的是:
_w
)这个结果:
public function () {
}
但我很期待
public function person () {
}
关于如何制作此片段或如何正确触发它的任何想法?
见https://stackoverflow.com/a/48676522/836330你的例子会工作,从vscode v1.49开始,你有它。 Vscode 代码片段已更新为“记住”您选择的文本,即使您似乎用代码片段前缀覆盖了它。
旧答案:
如果你用热键触发它,你可以使用
$TM_SELECTED_TEXT
:
{
"key": "cmd+k 1",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
// "langId": "csharp",
"name": "Function Creator Helper"
}
}
当前选中的文字显示为
${TM_SELECTED_TEXT}
,而不是$TM_SELECTED_TEXT
。
edit:正如下面评论的那样,对于这个特定的用例,情况并非如此
我自己也在为此苦苦挣扎。为了让它工作,你唯一需要做的就是按
F1
,运行Insert Snippet
命令,然后从列表中选择你的片段。
${TM_SELECTED_TEXT}
对我也不起作用。
${selectedText}
已添加为代码段编辑器变量:
https://github.com/Microsoft/vscode/pull/39483#issuecomment-383552677
例子:
"JS Block Quote": {
"prefix": "c2",
"body": [
"/* ${selectedText} */",
],
"description": "JS Block Quote"
}
此时没有正确记录: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables
注意: 在多行选择中,
${selectedText}
被截断到第一行。另一种方法是使用剪贴板和 ${CLIPBOARD}
变量。
一个额外的步骤:(
来自 Mitches 的例子:
"JS Block Quote": {
"prefix": "c2",
"body": [
"/* $TM_SELECTED_TEXT */",
],
"description": "JS Block Quote" }
来自文章:https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables 文档一定是在发布之前。
这在 vscode v1.30.2 中运行良好
如果有人想知道,它对我来说就是这样:
我创建了两个相同的片段,只有当我在 html 或 php 文件中时才匹配(只需在片段文件夹“php.json”和“html.json”中创建两个片段文件,它适用于任何语言)并在其中添加此代码:
"unicommentary": {
"prefix": "unicommentary",
"body": "<?php /* ${TM_SELECTED_TEXT} */ ?> ${0}",
"description": "Creates a universal comment to disable both html and php."
}
当您选择一些文本并通过
${TM_SELECTED_TEXT}
命令触发代码片段时,Insert Snippet
标签起作用,您不能只在选定的文本上书写。
当你想使用它时,在你的片段中选择你想要的文本,按 Ctrl + Shift + P 并选择
Insert snippet
然后,输入你的片段的名称,按回车键就可以了!
按 F1。 选择 emmet 选项。然后使用 emmet 快捷方式。例如,要将所选文本插入 decimal 类的跨度中,请键入 span.decimal。这样就可以了