Visual Studio中的哑完成

时间:2009-11-24 19:56:58

标签: visual-studio ide autocomplete

Intellisense很适合它的功能,但我经常发现自己渴望像Vim这样的编辑器完成“原始”文本。我似乎无法找到一个能够完成一个单词的工具 - 也许是在一个字符串中,任何地方 - 并且让VS尝试为我完成它(基于我之前在当前缓冲区中输入的内容,或者在所有打开的文件中,或者它想要工作)。

我错过了什么吗? (或者,如果有必要,是否有扩展来执行此操作?)看起来它实际上比Intellisense更容易实现,但它确实可以节省输入。

谢谢!

8 个答案:

答案 0 :(得分:5)

您可能需要查看VisualAssist加载项。它的自动完成功能会识别您最近输入的内容,因此默认情况下会选择最近的匹配项。它也可以在比标准IntelliSense更多的地方工作(例如包括路径)。

然而,一句警告,当你开始使用它时,很难回去......

答案 1 :(得分:1)

在VS2010中实现智能感知非常简单 - 假设你有2个问题的现成答案:

  1. 触发对话的内容
  2. 当前单词的可能完成列表是什么。
  3. 在我的自定义编辑器中,我花了90%的时间让NDjango解析器给我我需要的东西,只有10%实际上“实现”intellisense

    修改

    项目的开源可以随意download代码并使用它。

答案 2 :(得分:1)

查看Visual Studio,Word,Outlook和SQL Server的ViEmu,Vi / vim仿真。如果它仍然无法满足您的需求,请尝试自己动手。查看Visual Studio Extensibility Referencethis tutorial,以帮助您开始使用VS加载项。

答案 3 :(得分:1)

正如其他答案中所述,Visual Studio 2010中的Intellisense已经变得更好。不仅是可扩展性,还包括实现。

它现在过滤包含其中任何位置的类型名称的成员列表。这也适用于类和类型,因此您不必记住完整的类型或类名。最后,您可以使用Pascal Case命名模式过滤列表。这意味着更少的打字和更少的错误输入。

有关VS2010中Intellisense改进的更多信息,请访问ScottGu's blog

答案 4 :(得分:1)

CodeRush显示完成字符串或其他任何地方的字词的建议。他们有免费版本,但我不知道它是否支持此功能。

答案 5 :(得分:0)

2010年的可扩展性模型要简单得多,但(显然)仍然是一个移动目标。

应该可以使用the intellisense part of this获得简单的内容  提供ICompletionSource,它合并你想要提供的任何值以及现有的实现结果。

监控名称的当前缓冲区应该涉及一些人使用ITextViewITextBuffer

有一个修改codeplex上的presentation layer的例子,但你应该能够使用它作为尝试改变数据方面的基础。

答案 6 :(得分:0)

来自Jetbrains的

Resharper也完成了非常聪明的工作。 CTRL + SHFIT + Space激活他们的“智能”代码完成(超出正常的CTRL + Space结果),这是类型和上下文相关的。我经常发现它为我选择了合适的名字。

答案 7 :(得分:0)

如果你有一些想要填写的单词,你可以轻松创建一些片段来做到这一点。

这不仅仅是一个黑客攻击,但它可能会有所帮助。

Snippet xml:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>retype</Title>
      <Shortcut>retype</Shortcut>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Code Language="csharp">
        <![CDATA[ThisIsTheTextIHateToRetype();$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>