2009-11-24 16 views
9

Intellisense es bueno para lo que hace, pero a menudo me encuentro anhelando la finalización de texto "crudo" de editores como Vim. Parece que no puedo encontrar una facilidad para completar una palabra, tal vez en una cadena, en cualquier lugar, y hacer que VS intente completarlo por mí (basado en cosas que he escrito antes en el búfer actual, o en todos los archivos abiertos, o como quiera que funcione).Finalización tonta en Visual Studio

¿Echo de menos algo? (O si es necesario, ¿hay una extensión para hacer esto?) Parece que en realidad sería mucho más fácil de implementar que Intellisense, pero realmente puede ahorrar tipeo.

Gracias!

+1

idea interesante. A veces me encuentro escribiendo literales de cadenas largas casi idénticos, y algo así sería más fácil que copiar/pegar. –

Respuesta

5

Es posible que desee mirar el VisualAssist complemento. Su autocompletar es consciente de las cosas que escribiste recientemente, por lo que selecciona la coincidencia más reciente de forma predeterminada. También funciona en más lugares que el IntelliSense estándar (por ejemplo, incluir rutas).

Una palabra de advertencia sin embargo, cuando usted comienza a usarlo, es difícil volver ...

+0

no puedo encontrar la manera de autocompletar los literales de cadenas, ¿me falta algo? –

+0

@VincentXue: Hasta donde sé, Visual Assist no autocompletará literales de cadena ** excepto ** include paths. –

1

En VS2010 intelisense de aplicación es muy fácil - asumiendo que tiene una respuesta preparada para 2 preguntas:

  1. Lo que debería desencadenar el cuadro de diálogo
  2. ¿Qué es la lista de terminaciones posibles de la palabra actual.

En mi editor personalizado Pasé 90% del tiempo en hacer que el analizador NDjango dame lo que necesito y sólo el 10% en realidad "de ejecución" IntelliSense

Editar

El proyecto s fuente abierta siéntase libre de download el código y juegue con él.

+0

Bastante, pero esto realmente no debería necesitar involucrar a intellisense en absoluto. Es decir, no necesito la "finalización del código", simplemente la finalización de texto simple basada en las palabras que he escrito previamente, así que no es necesario que mecanografíe de nuevo. (También tenga en cuenta que esto debe estar disponible además del intellisense estándar; no estoy buscando reemplazar por completo el código.) –

+2

Entiendo lo que quiere, y no sé si algo por el estilo ya está disponible, lo que Estoy tratando de decir que sería muy fácil implementar su propia versión, incluido el punto muy válido de completar el código complementando (no reemplazando) el (los) existente (s). El punto aquí es que no importa qué tan fácil y obvio le parezca 'la finalización del texto', la próxima persona tendrá su propia idea sobre cómo debe funcionar. – mfeingold

+0

Aún necesitará conectarse a las API IntelliSense del editor porque eso es lo que proporciona la lista de finalización, etc. ... pero hacer una lista de todas las demás palabras en el búfer es bastante trivial. Especialmente si se dirige a VS2010 con sus nuevas API de extensibilidad de edición mucho más seguras. –

1

Eche un vistazo a ViEmu, emulación Vi/vim para Visual Studio, Word, Outlook y SQL Server. Si todavía no satisface sus necesidades, intente rodar el suyo. Consulte Visual Studio Extensibility Reference y this tutorial para ayudarlo a comenzar con los complementos de VS.

+0

Ya estoy usando ViEmu, en realidad :) –

0

El modelo de extensibilidad en 2010 es mucho más simple pero (obviamente) sigue siendo un objetivo en movimiento.

Debería ser posible para conseguir algo simple usando the intellisense part of this para suministrar una ICompletionSource que se funde en los valores que se desea suministrar junto con los resultados de las implementaciones existentes.

La supervisión del búfer actual para los nombres debería implicar jugar con el ITextView y el ITextBuffer.

Hay un ejemplo de modificación de presentation layer en codeplex, pero debería poder usarlo como base para intentar alterar el lado de los datos.

1

Como se ha dicho en otras respuestas, Intellisense en Visual Studio 2010 se ha convertido en mucho mejor. No solo la extensibilidad, sino también la implementación.

Ahora filtra la lista de miembros que contienen el nombre tipeado en cualquier lugar dentro de ellos. Esto también funciona con clases y tipos, por lo que no tiene que recordar el tipo completo o nombre de clase.Y por último no menos importante, puede filtrar la lista usando el patrón de nombres Pascal Case. Esto significa menos tipeo y menos errores de escritura.

Puede encontrar más información sobre las mejoras de Intellisense en VS2010 en ScottGu's blog.

1

CodeRush muestra sugerencias para completar palabras en cadenas o en cualquier otro lugar. Tienen una versión gratuita, pero no sé si es compatible con esta característica.

0

Resharper de Jetbrains también tiene la terminación que es muy inteligente. CTRL + SHFIT + Space activa su terminación de código "inteligente" (más allá de los resultados CTRL + Espacio normales), que es de tipo y sensible al contexto. Con frecuencia creo que es elegir nombres apropiados para mí.

0

Si tiene un puñado de palabras que desea completar, puede crear fácilmente algunos fragmentos para hacerlo.

Es más que un truco, pero podría ser útil.

fragmento de 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>