扩展Visual Studio“代码片段”功能

时间:2011-11-17 02:08:47

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

当我编写测试方法时,我输入“testm”,点击标签并神奇地看到:

[TestMethod]
public void MethodName()
{

}

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

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

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

我听说Visual Studio是可扩展和可自定义的等等。它是否足够可扩展?

4 个答案:

答案 0 :(得分:7)

您可以实现并使用自己的代码段,Microsoft提供了一个非常好的指南,指导如何完成此操作:Walkthrough: Implementing Code Snippets

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

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

答案 1 :(得分:2)

如果您安装CodeRush Xpress,那么您不仅可以获得一些出色的免费工作效率和重构工具,而且CodeRush Xpress还有open source community个插件。

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

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

答案 2 :(得分:1)

我建议的最佳方法是查看编辑器的可扩展性并进行处理。您可能需要执行以下步骤。

  1. 将一个键映射到“undercorize”动作。
  2. 使用编辑器扩展点,您可以访问Selected文本,进行处理。
  3. 最后更换它。
  4. 一个建议。虽然学习曲线可能有点高,不得不通过MEF和类似的东西。但它值得。

答案 3 :(得分:0)

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