【问题标题】:How to create a 'surround with' type of snippet in Visual Studio 2010?如何在 Visual Studio 2010 中创建“环绕”类型的片段?
【发布时间】:2011-08-19 13:42:54
【问题描述】:

有没有办法在 Visual Studio 2010 中使用 sn-p 创建“环绕声”?我知道如何创建一个替换类型的 sn-p。一个简单的 sn-p 环绕可以用 asp:hyperlink 环绕一个文本块。类似于默认的 'surround with' sn-ps 可以用 asp:panel 包围代码块。

【问题讨论】:

标签: c# visual-studio-2010 code-snippets


【解决方案1】:

事实证明,有些预定义的 ID 没有得到很好的记录。特别是对于 SurroundWith 类型 sn-ps,有一个 ID $selected$。因此,例如,#if sn-p 的代码是:

...
<Code Language="csharp">
    <![CDATA[#if $expression$ $selected$ $end$ #endif]]>
</Code>
...

$end$ ID 指示当环绕功能完成时光标的放置位置。 这就是它的全部。当然,请记住将 SurroundsWith 作为 SnippetType

有关更多示例,请尝试查看 C:\Program Files\Microsoft Visual Studio 10.0\\Snippets\1033\ 中的预定义 sn-ps。

【讨论】:

  • VS2012 不会将 sn-ps 存储在与 VS2010 相同的位置。如果您打开代码片段管理器并单击一组 sn-ps,它将向您显示它们的存储路径。它不是几英里远,但它仍然难倒我,直到我找到路径
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\Snippets\1033\Visual C#
  • 这个答案包含微软应该编写的文档。感谢分享@DiamondBack。
  • 作为参考,实际上记录了 $selected$ 关键字,以及此处的 $end$ 关键字:docs.microsoft.com/en-us/visualstudio/ide/… 他们应该在创建代码 sn-ps 的主要文章中包含此内容。跨度>
【解决方案2】:

查看creating snippets 上的 MSDN 文章。它应该给你一个好的开始。创建 sn-p 时,请务必为其指定 SnippetType SurroundsWith 以使 sn-p 包围所选代码。

对于最新的 Visual Studio(当前为 2017 年),有 Code Snippets on Microsoft DocsWalkthrough: Creating a Code Snippet

【讨论】:

  • 我不知道你们是怎么做到的,但是 sn-ps 对我从来没有用过!即使我替换内置代码中的代码并将它们放在适当的文件夹中! (VsDir\Code Snippets\Visual Basic) 或 (VsDir\Code Snippets\Visual C#)
  • @Alex:我一直使用 Resharper,它具有非常出色的 sn-p 支持,几乎支持所有其他功能。
  • resharper 的问题是,一旦你习惯了它,没有它你就无法生存,并且错过了基本的操作方法。
【解决方案3】:

VS2017 的示例和一些建议(基于之前的答案):

该示例适用于 XML sn-p,但我猜这或多或少适用于任何语言。

  1. 将下面的代码粘贴到文件中并保存为example.sn-p
  2. 从 VS do Tools->Code Snippet Manager,选择 Language of XML,然后选择 My XML Snippets
  3. 单击导入并选择 example.sn-p。
  4. 点击完成和确定
  5. 此时我重新启动了 VS,但可能不需要这种严厉的措施。
  6. 在 XML 文件中选择要使用 para 标记包围的文本。
  7. Ctrl+K、Ctrl+S,选择 My XML Snippets,然后选择“Example of a SurroundWith Snippet”。

标记将放置在您的文本之前和 之后。

如果您包含一个尾随新行,那么您会在文本之后得到一个额外的空白行,并且结束标记后面的文本与结束标记出现在同一行。仔细想想还是有道理的。

如果您只选择一行中的部分文本,那么您可能会也可能不会得到您所期望的。 sn-p 可能需要调整。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Example of a SurroundsWith snippet</Title>
      <Shortcut>shortcutsdontwork</Shortcut>
      <Description>
        complete example of SurroundsWith
        will put para tag on the line above selected text
        and /para end tag on the line below selected text
        will positon the cursor immediately after the
        closing angle bracket of the end tag
      </Description>
      <Author>mikedamay - TheDisappointedProgrammer</Author>
      <SnippetTypes>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Code Language="XML">
        <![CDATA[<para>
        $selected$
        </para>$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

关于 VS2017 中代码 sn-ps 的行为,我将限制我的编辑委员会说该实施对于现代 Microsoft 工具团队来说是不寻常的。特别要注意有关快捷方式功能的说法。据我所知,它们没有任何用处。

【讨论】:

    【解决方案4】:

    除了上面有用的答案,这里是Code Snippets Schema Reference,它对于找出 sn-ps 元素的有效值很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2012-02-10
      • 2010-10-19
      • 2012-01-05
      相关资源
      最近更新 更多