您可以在 VSCode 片段中访问 class 名称吗?

Can you access a class name in a VSCode snippet?

例如,您将如何在 VSCode 中创建与 ctor Visual Studio C# 片段等效的内容?我正在查看 VSCode 片段系统所基于的 TextMate 文档,我看到很多像 TM_SCOPE 这样的变量,但 VSCode 似乎没有评估这些变量。这在 VSCode 片段支持的当前状态下是不可能的吗?

根据 VSCode 文档,当您想为 C# 创建新的代码片段文件时:

// Place your snippets for C# here. Each snippet is defined under a snippet name and has a prefix, body and 
// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// ,  for tab stops, ${id} and ${id:label} and ${1:label} for variables. Variables with the same id are connected.

目前(在 v0.10.6 上)似乎只允许 $n 个变量。

但是它确实支持所有 TextMate 变量,不包括插值模板、正则表达式和转换——因此您可以根据文件名进行添加:

"body": [
    "public $TM_FILENAME()",
    "{",
    "[=10=]",
    "}"
]

不幸的是,这也得到了文件扩展名,还没有想出如何剃掉它

事实证明,现在你可以!

只需添加 ${TM_FILENAME_BASE} 即可显示文件名。还有很多其他变量,比如 TM_CURRENT_LINE 用于获取当前行的文本,甚至是 CLIPBOARD。

您可以在此处的官方文档下找到所有可用的命令: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables