Pregunta

¿Hay algún complemento o métodos incorporados en Vim para realizar la refactorización de código C o C ++, algo así como las herramientas de refactorización en Eclipse?

Estoy especialmente interesado en la herramienta de método extracto refactorización de Eclipse que va a determinar parámetros de nuevos métodos y típicamente también adivinar una variable para su uso como el valor de retorno.

¿Fue útil?

Solución

No, aunque Vim es un buen ambiente para la edición, y se puede personalizar de muchas maneras (plegado de código, coloreado de sintaxis, macros de expansión etc.) la mayoría de estos se realizan en el nivel de sintaxis, más que el nivel semántico . Incluso el plegado de código simplemente coincide apoyos opuestos.

Para hacer una refactorización adecuada, usted tiene que tener una gran cantidad de conocimiento semántico de la AST, qué variables se declaran en el que el alcance, y así sucesivamente. IDEs como Eclipse acumulan una caché de las variables definidas en cada ámbito léxico, de modo que puedan referirse rápidamente de vuelta a donde son utilizados en términos de determinar qué cambiar el nombre y dónde.

Eso no quiere decir que usted no puede hacer algunas cosas sintácticamente; después de todo, uno puede simplemente sacar un bloque de código y ponerlo en una función separada con bastante facilidad. Usted podría incluso ser capaz de adivinar en algunos parámetros (por ejemplo, encontrar una lista de las variables, averiguar cuáles tienen declaraciones locales, eliminarlos y lo que queda son sus parámetros. Pero Eclipse también hace otras cosas-como averiguando si las variables son modificados en la función, y la garantía de que están pasada hacia atrás por el valor de retorno. también comprueba para cualquier excepción lanzada, y añadirlos a la lista.

El efecto neto es que, aunque es posible que pueda aproximar algunos de estos en Vim, que realmente no vas a ser capaz de conseguir este trabajo en un AMBIENTE Vim-solamente. Se podría utilizar una combinación de teclas Vim-como en Eclipse adecuada, o buscar en eclim . Desde la página principal:

  

El objetivo principal de eclim es llevar   Eclipse funcionalidad al Vim   editor. El objetivo inicial era   proporcionar funcionalidad Java de Eclipse   en vim, pero el soporte para varios otros   lenguajes (C / C ++, PHP, Python, Ruby,   CSS, HTML, XML, etc.) se han añadido   y varios más se han previsto.

     

Eclim es menos de una aplicación y   más de una integración de dos grandes   proyectos. La primera, Vim, es sin duda   uno de los mejores editores de texto en   existencia. El segundo, Eclipse,   proporciona muchas herramientas para   el desarrollo en varios idiomas. Cada   proporciona muchas características que pueden   aumentar la productividad de los desarrolladores, pero   ambos todavía dejan mucho que   deseado. Vim carece de soporte nativo Java   y muchas de las características avanzadas   disponible en Eclipse. Eclipse, en el   Por otro lado, todavía requiere el uso de   el ratón para muchas cosas, y cuando   en comparación con Vim, proporciona una menos de   interfaz ideal para la edición de texto.

     

Aquí es donde entra en juego eclim.   En lugar de tratar de escribir en un IDE   Vim o un editor Vim en Eclipse, eclim   proporciona plug-in que un Eclipse   expone características de Eclipse a través de una   interfaz de servidor, y un conjunto de Vim   plug-ins que se comunican con Eclipse   sobre dicha interfaz.

Esto no sólo da un entorno Eclipse-como, es es Eclipse. Pero sigue recibiendo las funciones de navegación y de edición de texto de vim. Suena como este podrían satisfacer sus necesidades, aunque la documentación sobre refactorización apoyo no indica que proporciona una funcionalidad método extracto.

Otros consejos

He escrito un refactorización complemento . C ++ es uno de los principales idiomas que se manejan (ya que es mi idioma principal en el trabajo). se admite Método de extracción.

En C ++, el plugin es capaz (gracias a ctags) para deducir la mayoría (pero por desgracia no siempre todo - gracias a ctags ...) de las variables que entran y salen de la función extraído. Todavía tengo que escribir un pequeño cuadro de diálogo para seleccionar cómo se intercambian los de las variables de entrada / salida (ref const, ref rvalue, copiar, puntero, tuplas, estructura, etc.) (Por cierto, ayuda es bienvenida como interfaces gráficas de usuario no son lo mío ^^ ') .

Después de buscar alta y baja para vim con refactorización para C ++, esta es la mejor solución que he llegado con.

  • Visual Studio 2013 y superior - Gran IDE para C ++ desarrollo y depuración, pero no tiene suficiente refactorización o vim
  • Instalar el plugin vsvim - Ahora, usted tiene toda la navegación vim, búsqueda, sustitución de cadenas, etc. (Algunas de las características avanzadas que no son compatibles)
  • Instalar Resharp C ++ - Excelente para la refactorización a costa de la velocidad. Esto hace que sea un poco torpe, pero si quieres inferir de auto generar métodos / variables, cambiar el nombre de las variables locales / globales / método o funciones, la búsqueda de usos en la solución, y más características, hace que sea muy vale la pena.

Esta es la mejor combinación que encontré para C ++ desarrollo, depuración y refactorización. Me hace al menos 3x - 5 veces más rápido. Espero que le ayuda también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top