2009-11-24 14 views
9

Intellisense è bello per quello che fa, ma spesso mi trovo nostalgia per il completamento del testo "grezza" di editor come Vim. Non riesco a trovare una struttura per essere in grado di completare una parola - forse in una stringa, ovunque in realtà - e ho provato VS a completarlo per me (basato su cose che ho digitato prima nel buffer corrente, o in tutti i file aperti, o comunque vuole funzionare).completamento Dumb in Visual Studio

Mi manca qualcosa? (O se necessario, c'è un'estensione per fare questo?) Sembra che sarebbe in realtà molto più facile da implementare di Intellisense, ma in realtà può salvare la digitazione.

Grazie!

+1

Idea interessante. A volte mi trovo a inserire letterali a stringa lunga quasi identici, e qualcosa del genere sarebbe più facile rispetto a copia/incolla. –

risposta

5

Si consiglia di guardare il componente aggiuntivo VisualAssist. Il suo completamento automatico è a conoscenza delle cose che hai digitato di recente, quindi seleziona la corrispondenza più recente per impostazione predefinita. Funziona anche in più posti rispetto a IntelliSense standard (ad esempio, include i percorsi).

Una parola di avvertimento però, quando si inizia ad usarlo, è difficile tornare indietro ...

+0

non riesco a scoprire come completare automaticamente i valori letterali stringa, mi manca qualcosa? –

+0

@VincentXue: per quanto ne so, Visual Assist non completerà automaticamente i valori letterali stringa ** tranne ** include percorsi. –

1

In VS2010 intellisense attuazione è estremamente facile - a patto che abbiate una risposta pronta per 2 domande:

  1. Quale dovrebbe innescare il dialogo
  2. Qual è la lista dei possibili completamenti per la parola corrente.

Nel mio editor personalizzato ho speso il 90% del tempo di fare del parser NDjango dare a me quello che mi serve e solo il 10% sulla realtà "di esecuzione" intellisense

Modifica

Il progetto s open source non esitate a download il codice e giocare con esso.

+0

Abbastanza giusto, ma in realtà non dovrebbe assolutamente coinvolgere l'intellisense. Cioè, non ho bisogno di "completamento del codice", solo un semplice completamento del testo basato su parole che ho digitato in precedenza, quindi non ho bisogno di digitare di nuovo. (Si noti inoltre che questo deve essere disponibile in aggiunta a intellisense standard, non sto cercando di sostituire del tutto il completamento del codice.) –

+2

Capisco quello che vuoi, e non so se qualcosa del genere è già là fuori, cosa ho sto cercando di dire che sarebbe abbastanza facile implementare la propria versione, incluso il punto validissimo del completamento del codice che integra (non sostituisce) quello esistente. Il punto qui è non importa quanto semplice e ovvio 'completamento del testo' suoni a voi, la prossima persona avrà la sua idea su come deve funzionare – mfeingold

+0

Dovreste ancora collegarvi alle API IntelliSense dell'editor perché questo è ciò che fornisce il elenco di completamento, ecc ... ma renderlo elencato tutte le altre parole nel buffer è abbastanza banale. Soprattutto se il tuo obiettivo è VS2010 con le sue API di estensibilità per i nuovi editor molto più intelligenti. –

1

Date un'occhiata a ViEmu, Vi emulazione/vim per Visual Studio, Word, Outlook e SQL Server. Se continua a non soddisfare i tuoi bisogni, prova a far girare il tuo. Dai un'occhiata allo Visual Studio Extensibility Reference e allo this tutorial per iniziare a utilizzare i componenti aggiuntivi di VS.

+0

Sto già utilizzando ViEmu, in realtà :) –

0

Il modello di estensibilità nel 2010 è molto più semplice, ma è (ovviamente) ancora un bersaglio in movimento.

Dovrebbe essere possibile ottenere qualcosa di semplice utilizzando the intellisense part of this per fornire un ICompletionSource che si fonde con qualsiasi valore che si desidera fornire insieme ai risultati delle implementazioni esistenti.

Il monitoraggio del buffer corrente per i nomi dovrebbe comportare un po 'di gioco con ITextView e ITextBuffer.

C'è un esempio di modifica di presentation layer su codeplex ma dovresti essere in grado di usarlo come base su cui provare a modificare il lato dati delle cose.

1

Come indicato in altre risposte, Intellisense in Visual Studio 2010 è diventato molto meglio. Non solo l'estensibilità, ma anche l'implementazione.

Ora filtra l'elenco dei membri che contengono il nome digitato da nessuna parte al loro interno. Questo funziona anche con classi e tipi, quindi non è necessario ricordare il nome completo del tipo o della classe.Infine, non ultimo, puoi filtrare l'elenco utilizzando il modello di denominazione del caso Pascal. Ciò significa meno battitura e meno errori di digitazione.

Ulteriori informazioni sui miglioramenti di Intellisense in VS2010 sono disponibili su ScottGu's blog.

1

CodeRush mostrare suggerimenti per il completamento di parole in stringhe o in qualsiasi altro luogo. Hanno una versione gratuita, ma non so se supporta questa funzionalità.

0

Resharper da Jetbrains ha anche il completamento che è molto intelligente. CTRL + SHFIT + Spazio attiva il completamento del codice "intelligente" (oltre ai normali risultati CTRL + Spazio), che è di tipo e sensibile al contesto. Trovo spesso che scelga nomi appropriati per me.

0

Se si dispone di una manciata di parole si sta cercando di compilare, è possibile creare facilmente alcuni frammenti di farlo.

E 'più di un po' di un hack, ma potrebbe essere utile.

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> 
Problemi correlati