2009-11-24 3 views
9

Intellisense ist nett für das, was es tut, aber oft sehne ich mich nach der "rohen" Textvervollständigung von Editoren wie Vim. Ich kann anscheinend keine Möglichkeit finden, ein Wort zu vervollständigen - vielleicht in einer Zeichenkette, irgendwo wirklich - und VS versuchen, es für mich zu vervollständigen (basierend auf Sachen, die ich vorher in den aktuellen Puffer eingegeben habe, oder in allen offenen Dateien, oder wie auch immer es funktionieren will).Dumb Completion in Visual Studio

Fehle ich etwas? (Oder, wenn nötig, gibt es eine Erweiterung, um dies zu tun?) Es scheint, als wäre es tatsächlich viel einfacher zu implementieren als Intellisense, aber es kann wirklich Tipparbeit sparen.

Danke!

+1

Interessante Idee. Ich finde manchmal, dass ich in fast identische lange String-Literale eintrete, und so etwas wäre einfacher als Kopieren/Einfügen. –

Antwort

5

Sie können sich das Add-In VisualAssist ansehen. Bei der automatischen Vervollständigung werden die zuletzt eingegebenen Daten berücksichtigt. Daher wird standardmäßig die aktuellste Übereinstimmung ausgewählt. Es funktioniert auch an mehr Orten als das Standard IntelliSense (z. B. Include-Pfade). jedoch

Ein Wort der Warnung, wenn Sie es benutzen, ist es schwer, zurück zu gehen ...

+0

kann etwas nicht herausfinden, wie man Auto-Vervollständigen Stringliterale, bin ich dabei? –

+0

@VincentXue: Soweit ich weiß, wird Visual Assist String-Literale ** mit Ausnahme von Include-Pfaden nicht automatisch vervollständigen. –

1

In VS2010 Implementierung Intellisense ist extrem einfach - vorausgesetzt, dass Sie eine Antwort bereit für 2 Fragen:

  1. Was den Dialog auslösen soll
  2. Was die Liste der möglichen Ergänzungen für das aktuelle Wort.

In meinem benutzerdefinierten Editor verbrachte ich 90% der Zeit auf Herstellung der NDjango Parser mir geben, was ich brauche und nur 10% auf tatsächlich intellisense

bearbeiten

Das Projekt "Umsetzung" s Open Source fühlen sich frei download den Code und spielen damit.

+0

Fair genug, aber das sollte wirklich keine Intellisense benötigen. Das heißt, ich brauche keine "Code-Vervollständigung", nur eine einfache Textvervollständigung basierend auf Wörtern, die ich zuvor eingegeben habe, so dass ich sie nicht erneut eingeben muss. (Bitte beachten Sie, dass dies zusätzlich zum Standard-Intellisense verfügbar sein muss; ich möchte die Code-Vervollständigung nicht vollständig ersetzen.) –

+2

Ich verstehe, was Sie wollen, und ich weiß nicht, ob etwas von der Art schon da draußen ist, was ich Ich versuche zu sagen, wäre es ziemlich einfach, Ihre eigene Version zu implementieren, einschließlich der sehr gültigen Punkt Ihrer Code-Ergänzung Ergänzung (nicht ersetzen) der bestehenden (s). Der Punkt hier ist, egal wie einfach und offensichtliche "Text Completion" für Sie klingt, die nächste Person wird seine eigene Idee haben, wie es funktioniert – mfeingold

+0

Sie müssten immer noch in Editor IntelliSense APIs anschließen, denn das ist, was die bietet Vervollständigungsliste usw. ... aber es ist ziemlich trivial, alle anderen Wörter im Puffer aufzulisten. Vor allem, wenn Sie VS2010 mit seinen vielen neuen Editor-Erweiterbarkeits-APIs anvisieren. –

1

Werfen Sie einen Blick auf ViEmu, Vi/Vim-Emulation für Visual Studio, Word, Outlook und SQL Server. Wenn es Ihre Anforderungen immer noch nicht erfüllt, versuchen Sie, Ihre eigenen zu rollen. Schauen Sie sich die Visual Studio Extensibility Reference und this tutorial an, um Ihnen den Einstieg in VS Add-Ins zu erleichtern.

+0

Ich bin schon ViEmu verwenden, eigentlich :) –

0

Das Erweiterbarkeitsmodell ist 2010 viel einfacher, aber (offensichtlich) immer noch ein bewegliches Ziel.

Es sollte möglich sein, etwas einfach zu bekommen mit the intellisense part of this eine ICompletionSource zu liefern, die in übergeht, was auch immer Werte, die Sie wollen mit den vorhandenen Implementierungen Ergebnisse liefern zusammen.

Die Überwachung des aktuellen Puffers für Namen sollte einige spielen mit den ITextView und ITextBuffer beinhalten.

Es gibt ein Beispiel für die Änderung der presentation layer auf Codeplex, aber Sie sollten in der Lage sein, dies als eine Basis zu verwenden, auf der versuchen, die Datenseite der Dinge zu ändern.

1

Wie in anderen Antworten erwähnt, Intellisense in Visual Studio 2010 ist viel besser geworden. Nicht nur die Erweiterbarkeit, sondern auch die Implementierung.

Es filtert jetzt die Liste der Mitglieder mit dem eingegebenen Namen irgendwo in ihnen. Dies funktioniert auch mit Klassen und Typen, sodass Sie sich nicht den vollständigen Typ oder Klassennamen merken müssen.Und nicht zuletzt können Sie die Liste mit dem Benennungsmuster Pascal Case filtern. Dies bedeutet weniger Tippfehler und weniger Tippfehler.

Weitere Informationen über die Intellisense Verbesserungen in VS2010 kann auf ScottGu's blog finden.

1

CodeRush zeigen Vorschläge zur Vervollständigung von Wörtern in Strings oder überall sonst. Sie haben eine kostenlose Version, aber ich weiß nicht, ob es diese Funktion unterstützt.

0

Resharper von Jetbrains hat auch Fertigstellung, die sehr intelligent ist. STRG + SHFIT + Space aktiviert ihre "intelligente" Code-Vervollständigung (über Ihre normalen STRG + Leerzeichen hinaus), die typ- und kontextsensitiv ist. Ich finde häufig, dass es passende Namen für mich auswählt.

0

Wenn Sie eine Handvoll Worte haben Sie zu füllen suchen, können Sie einfach ein paar Schnipsel erstellen, das zu tun.

Es ist mehr als ein bisschen wie ein Hack, aber es könnte hilfreich sein.

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>