Visual studio code VSCode中的动态代码段求值
片段是否可以在Visual Studio代码中插入动态计算的完成或片段 我想插入各种格式的日期和时间字符串的片段。例如,如果键入日期,ISO格式的当前日期将自动展开 Sublime Text中有一个工具,可以通过Visual studio code VSCode中的动态代码段求值,visual-studio-code,vscode-extensions,vscode-snippets,Visual Studio Code,Vscode Extensions,Vscode Snippets,片段是否可以在Visual Studio代码中插入动态计算的完成或片段 我想插入各种格式的日期和时间字符串的片段。例如,如果键入日期,ISO格式的当前日期将自动展开 Sublime Text中有一个工具,可以通过EventListener类中的方法在python API中实现这一点。在那里,实施将非常简单: def on_query_completions(self、view、前缀、位置): 如果前缀==“日期”: val=datetime.now().strftime(“%Y-%m-%d”)
EventListener
类中的方法在python API中实现这一点。在那里,实施将非常简单:
def on_query_completions(self、view、前缀、位置):
如果前缀==“日期”:
val=datetime.now().strftime(“%Y-%m-%d”)
如果val else[]则返回[(前缀,前缀,val)]
我已经阅读了上的文档,但似乎只能插入带有制表位和用户填写的变量的预定义文本
如果snippetapi公开的功能无法实现这一点,那么我是否能够通过较低级别的插件/扩展API实现类似的功能
我确实意识到有一个名为的现有扩展,但它通过命令托盘而不是动态扩展来工作。在代码段中执行脚本或类似内容绝对是不可能的 您可以为VisualStudio代码编写扩展。该扩展必须实现一个 它的
provideCompletionItems
方法将返回一个列表。它们的filterText
属性将设置为建议框中显示的文本(例如“日期”或“时间”),它们的insertText
属性将设置为动态计算的值
最后,您需要使用注册表CompletionImprovider注册完成提供程序
在开始之前,您绝对应该看看如何创建扩展名:不过,不使用扩展名也可以实现简单的日期时间功能:
"⌚ Date Time SNIPPET": {
"prefix": "datetime",
"body": [
"${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}T${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND}",
]
}
问题是关于动态代码段。下面是一个使用CompletionTemprovider
的示例:
const datetimeProvider = vscode.languages.registerCompletionItemProvider(
{
scheme: 'file',
// language: 'typescript',
},
{
provideCompletionItems(document: vscode.TextDocument, position: vscode.Position) {
const completionItem = new vscode.CompletionItem('datetime ⌚', vscode.CompletionItemKind.Snippet);
completionItem.insertText = new Date(Date.now() - new Date().getTimezoneOffset() * 60000).toISOString().split('.')[0];
return [completionItem];
}
},
// ''// trigger character
);
谢谢,这为我指明了正确的方向。对于这个用例,使用
CompletionItem
s来实现并不像ST那样简单,但它确实提供了更多的灵活性。@chris scott,我正在寻找如何做同样的事情(出于同样的原因-不同格式的时间戳)。既然它听起来像是在工作,您是否愿意分享您的扩展或将其放在VS代码市场上?:)@Dullroar,是的,我正计划去。我还没有在开发模式之外测试它,这就是为什么我还没有发布它的原因,但我会上传到github,以便您可以查看。期待着它。这仍然是事实吗,或者这方面有任何更新吗?谷歌搜索了一下,但没有发现任何东西:(你可以使用扩展名并定义键盘快捷键