【问题标题】:Extending Visual Studio's "Code Snippet" functionality扩展 Visual Studio 的“代码片段”功能
【发布时间】:2011-12-30 23:13:03
【问题描述】:

当我写一个测试方法时,我输入“testm”,点击tab然后神奇地看到:

[TestMethod]
public void MethodName()
{

}

当我输入 methodName 时,它​​会突出显示(此处无法显示)作为我正在填写的“字段”。我相信你们都熟悉这种行为。

就我个人而言,我喜欢我的测试方法的名称,例如 Can_My_Method_Do_That_Thing 而不是 CanMyMethodDoThatThing。我发现它们更容易阅读,而且大多数时候它们实际上是一个句子。

由于我不想进入的原因,我很难输入所有这些 _ 字符,我希望能够使用空格键,并在当我点击“Enter”时,名称会自动替换。

我听说 Visual Studio 是可扩展和可定制的等等。它的可扩展性足以做到这一点吗?

【问题讨论】:

    标签: visual-studio-2010 code-snippets vs-extensibility


    【解决方案1】:

    如果您安装了CodeRush Xpress,那么您不仅会获得一些出色的免费生产力和重构工具,而且还有open source community 的 CodeRush Xpress 插件。

    我发现 this plugin (几乎)完全符合您的要求。

    需要注意的是,它是为 NUnit 而不是 MSTest 开发的,因此您将获得 [Test] 属性而不是 [TestMethod] 属性。由于这是开源的,因此根据您的要求修改代码应该相当容易。

    【讨论】:

      【解决方案2】:

      我建议的最佳方法是研究编辑器的可扩展性并加以解决。您可能需要执行以下步骤。

      1. 为您的“强调”操作映射一个键。
      2. 使用编辑器扩展点,您可以访问选定的文本并对其进行处理。
      3. 最后替换它。

      一个建议。尽管必须通过 MEF 和类似的东西,学习曲线可能有点高。但它值得。

      【讨论】:

        【解决方案3】:

        另一种值得考虑的方法是使用外部工具重新映射键盘。例如,让AutoHotKeytestm[Tab] 按键序列做出反应并切换到将空格映射到下划线的模式应该很简单(或在每个空格出现时立即删除它)键入并添加下划线)。同样,Enter 键可以再次将其切换出该模式。

        【讨论】:

          【解决方案4】:

          您可以实现和使用自己的代码 sn-ps,Microsoft 提供了一个很好的指南来说明如何做到这一点:Walkthrough: Implementing Code Snippets

          要快速了解“testm”扩展(即 Snippet 类型)是如何“部分”实现的,您可以转到 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\Snippets\1033\Test\ 目录并编辑 testmethod.snippet 文件。

          我自己从未实现过这种“扩展”,但微软的Extending the Editor 网站是一个非常好的信息来源,可以了解如何实现这一点。这是你应该开始寻找的地方。

          【讨论】:

          • 我认为重点不是sn-ps,而是下划线。
          • @Mehrdad 我认为重点是在 Visual Studio 编辑器中实现对基于 _ 的名称的合理支持。要使其到位,您很可能会使用代码片段、Smart Tags、Highlights 等扩展。所有这些在 msdn 页面上都有很好的描述。
          猜你喜欢
          • 1970-01-01
          • 2015-11-22
          • 2020-09-07
          • 1970-01-01
          • 2011-09-26
          • 1970-01-01
          • 1970-01-01
          • 2016-11-17
          相关资源
          最近更新 更多