【问题标题】:VSCode to Visual Studio IDE code snippet conversionVSCode 到 Visual Studio IDE 代码片段的转换
【发布时间】:2021-09-27 21:48:57
【问题描述】:

考虑以下取自 here 的 VSCode 代码 sn-p:

 "var set get f m_":{
    "prefix": "varsetgetfm",
    "body":[
        "${1:int} ${2:VARNM};",
        "$1 ${2/^(?:f|m)_?([A-Za-z])(.*)|([A-Z].*)$/${1:/downcase}$2${3:/downcase}/}(){return $2;}",
        "void ${2/^(?:f|m)_?([A-Za-z])(.*)|([A-Z].*)$/${1:/downcase}$2${3:/downcase}/}($1 val){$2 = val;}"
    ]
  }

有没有一种方法可以自动将这个和其他 sn-ps 从 VSCode 转换为可在 Visual Studio IDE 中使用的格式,而无需手动找出等效的格式? Visual Studio IDE 似乎有 xml based snippets 而不是像 VSCode 那样基于 json 的 sn-ps。

【问题讨论】:

  • VS 是否允许字段转换
  • @rioV8 你的 sn-p 很强大。我不知道你的问题的答案。我最近才使用 sn-ps。由于 VS 存在的时间更长并且实际上是一个 IDE,我希望人们可以在其中做一些在 VSCode 中也可以做的事情。
  • @rioV8 FWIW,请参阅docs.microsoft.com/en-us/answers/questions/566576/… MS VSIDE 人员似乎暗示它还不是 VS IDE 中可能提供的功能。 :-(

标签: visual-studio visual-studio-code


【解决方案1】:

没有现成的方法。但是有一种方法,它涉及解析 json 和创建所需的 xml。 您可以使用架构参考link 来查看 json xml、sn-p 等价物。

换句话说,自己做。鉴于所有细节都已由 Microsoft 记录,应该相当容易。


次日编辑:

看看我制作的这个 gif 。它replicates部分复制了visual studio中的vscode sn-p。

另外,sn-p xml 代码:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>varsetget</Title>
            <Shortcut>varsetget</Shortcut>
            <Description>Code snippet testing</Description>
            <Author>Dorian</Author>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>type</ID>
                    <ToolTip>the var type</ToolTip>
                    <Default>int</Default>
                </Literal>
                <Literal>
                    <ID>VARNM</ID>
                    <ToolTip>the var name</ToolTip>
                    <Default>VARNM</Default>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[
                $selected$$type$$end$ $VARNM$;
                $type$ $VARNM$(){return $VARNM$;}
                void $VARNM$($type$ val){$VARNM$ = val;}
            ]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

为了能够使用它,请使用上面的代码在机器上的任意位置创建一个*.snippet 文件,然后:

  1. 导航并打开您创建的*.snippet 文件

  2. 您现在可以测试 sn-p

注意:在 Visual Studio 2019 中,插入代码 sn-p 或移动到下一个 Declaration Literal 的默认设置是按两次 Tab,而不是 Visual Studio Code,其中只需要一个Tab


我写的一切都来自msdocs或从那里的例子中扣除。


我的最后一次编辑:

看来您并没有走运。但遗憾的是,我没有时间进一步调查/测试。 https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.package.expansionfunction?view=visualstudiosdk-2019

另外,根据this SO post,您基本上必须创建自己的语言,我个人对此表示怀疑。

PS:MS q&a 的人怎么不建议这个我不明白...

【讨论】:

  • 我怀疑链接是否足够。例如,在 OP 中的 VSCode sn-p 中,会自动从大写字母转换为小写字母。如何在 Visual Studio IDE 代码 sn-p 中做到这一点?该链接当然没有提供任何帮助或提示,我很容易找到。
  • 您现在要求编辑器行为,而不是从字面上复制 sn-p。不同的事情imo。除了在项目中工作/编辑的 ms 人员之外,no1 也可以告诉您这些细节(假设它存在且未记录)。你/我们唯一拥有的就是那个文件。
  • 感谢您提供的详细信息。但是,您的 gif 文件不会像 @rioV8 的 sn-p 在 VSCode 中那样做。请参阅imgur.com/LuBzSDF 请注意,@rioV8 提供的 sn-p 代码中的VariableName 将转换为完整的小写variablename。在您的情况下,f_testASs 是变量名。函数名称继续相同。我希望他们成为f_testass。这就是我希望 sn-p 实现的本质。
  • FWIW,请参阅docs.microsoft.com/en-us/answers/questions/566576/… MS VSIDE 人员似乎暗示它还不是 VS IDE 中可能的功能。 :-(
  • 哦,我现在明白了。 Ty 为 gif。我不会注意到的。好吧,如果您添加三个Literals,会不会打扰您?类型、fname 和 vname?否则我很抱歉,但它的 ide 限制就像我说的那样。
猜你喜欢
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
相关资源
最近更新 更多