Usar Vim al codificar una aplicación a gran escala


17

Estoy empezando a aprender Vim, y siguiendo algunos de los consejos dados aquí en stackexchange. Estoy empezando a usarlo en algunos proyectos de juguetes y estoy de acuerdo con eso.
Pero comencé a preguntarme cómo puede ser productivo sin abrir otros archivos todo el tiempo solo para saber cómo está el nombre de esa clase, qué incluye esa macro en otro archivo, etc.

¿Cuáles son los consejos comunes que puedes dar?


1
Definitivamente necesitará agregar algunos scripts de Vim para ayudar. Yo uso Vim para programar mucho, y siempre uso ctags para ayudarme a navegar por el código fuente. ¿Qué idioma estás usando?
tehnyit

Respuestas:


10

Un aspecto de los programadores experimentados que pasan de un entorno IDE a un entorno de consola / xterm es encontrar un reemplazo para la indexación de objetos de código fuente (nombres de funciones, variables). Creo que el término general utilizado para Visual Studio de Microsoft es Intellisense o algo así.

En el mundo Unix / Linux, como vim, una herramienta utilizada si ctagso la popular implementación de código abierto de múltiples idiomas, etiquetas exuberantes . No es vimespecífico, y es compatible con varios editores de texto de Unix, Linux, MS Windows, Mac OS, incluidos Emacs, CRiSP, vile y varios otros clones vi, nedit, gedit, JED, UltraEdit, BBEdit y DreamWeaver. (algunos de estos son a través de complementos de terceros).

Más allá de eso, un buen diseño y una descomposición cuidadosa, la organización de proyectos más grandes hace que el proyecto sea manejable ya que solo hay 1-2 lugares potenciales obvios para buscar cualquier dato ( typedefo classdefiniciones, etc.).

También uso varias instancias de vim (a menudo a través viewde la visualización de solo lectura de archivos fuente), así como un uso limitado de múltiples buffers de edición por instancia de vim (principalmente para mover o refactorizar código entre archivos). Creo que usar solo unos pocos archivos fuente abiertos a la vez puede ayudar de alguna manera, para mantenerme enfocado en la tarea en cuestión.


1
¡+1 por sugerir etiquetas exuberantes !
Atila O.

1
Me parece que solo ser organizado ayuda mucho. Si puede mirar un artefacto en la fuente y decir "Oh, eso debe definirse en este lugar", entonces las cosas se vuelven mucho más simples. En el lado positivo, iniciar sesiones vim es tan rápido que tener media docena abierta a la vez se convierte en algo bastante normal
Zachary K

@ZacharyK ¿Media docena? Por lo general, tengo una docena completa al final del día
Izkata

depende del día
Zachary K

7

No pretendo ser parte del debate VIM vs. IDE. Supongo que es pref personal. Pero uso mucho VIM y aquí es por qué me resulta muy poderoso usar vim

Dos partes de la respuesta:

R. La mayoría de las cosas VIM permite la mayoría de las cosas que puede hacer con IDEs (no estoy tratando de poner todas las funciones, sino solo algunas no obvias que hacen que vi parezca limitante)

  1. puedes atravesar los prototipos si has ctagshabilitado y hacesctrl+{

  2. Puede abrir varias ventanas simultáneamente sing: sp 'nombre de archivo' comando. Por supuesto, en algún momento solo abro múltiples terminales para hacer la vida más fácil.

  3. Potente resaltado de sintaxis. Por defecto, así como otras cosas. Además, a diferencia de algunos IDEs, si hay una falta de coincidencia de llaves abiertas, cadena o no coincide con las cerradas, le da una indicación muy clara. Es para la mayoría de los idiomas en lugar de específicos.

  4. Puede ejecutar la línea de comando usando el comando ":!make"sin salir de la ventana.

  5. Recorre mucho más rápido según la palabra, según la búsqueda (vi admite regexp si estás disponible), y puedes atravesar { a } usandoESC %

  6. Es posible trabajar en GDB mientras se realiza la depuración por pasos y se mantiene vi (en otra ventana para trabajar en el código). Cuando decida cambiar el archivo, puede volver a crearlo y volver a cargarlo en GDB.

B. Muchas cosas lo encuentras mejor en VIM

  1. La búsqueda y el reemplazo son definitivamente mucho más poderosos.

  2. Puede crear su aspecto y sensación personalizados (negro + verde en lugar de blanco + azul) y, lo que es más importante, su propio comando poderoso.

  3. Selección de bloque vertical. Intenta ctrl+vmover el cursor verticalmente. ¡Esta es realmente una característica inimaginable!

  4. Suena extraño, ¡pero intenta cortar / copiar un bloque y tener que pegarlo 30 veces! No requiere más esfuerzo que hacerlo 1 vez. Además, intente rehacer (no deshacer) una actividad una o varias veces.

  5. Sangrado automático, control de pestañas y forma automática de convertir sus comentarios en comentarios de bloque o comentarios de estilo particular.

  6. Conflicto efectivo de fusión con vimdiff.

  7. ¡Lo más importante con el entorno de trabajo basado en la consola es que nunca toca el RATÓN! así que si eres rápido en el teclado, los IDE no son buenos.

  8. ¡Trabaja en múltiples máquinas, servidores simultáneamente! No parece obvio, pero a veces cuando trabaja en el servidor, inicia sesión directamente en varias máquinas y hace cosas.

Responderemos sobre cómo hacerlo en vi si esas características tienen grandes demandas. Ver este sitio Vimcast . Por supuesto, hay muchos.

Pero sí, la mayoría de las cosas basadas en consolas son anticuadas, y de ninguna manera estoy diciendo nada en contra de los IDE.


Pequeña nota: vim tiene un :makecomando incorporado, ni siquiera necesita el !(que, para aquellos que no usan vim, ejecuta un comando en el terminal). Y lo encontré hace ctrl-vun par de semanas y ahora lo uso constantemente, es increíblemente útil.
Kevin

@Kevin - ok, no sabía sobre <code>: make </code>! Fue emocionante saberlo. Este es un tipo de romance que obtienes con VIM: ¡nunca se puede hacer una lista completa de características que VIM te puede permitir hacer! Siempre te sorprende. Gracias.
Dipan Mehta

Sí, es genial así. La ventaja de esto :makees que te lleva automáticamente al primer error, y puedes navegarlos con cny cp, mira :help make. En realidad no me di cuenta hasta que lo busqué; Normalmente hago en una ventana diferente y pwd, parece que tienes que estar en el mismo que el Makefile, aunque puedes poner uno en el directorio src solo para moverte a la raíz y hacer allí.
Kevin

4

En mi opinión, Vim le ofrece un editor muy sólido con funciones básicas, pero depende de usted darle vida a los scripts / complementos que probablemente usará en sus proyectos. Probablemente serán diferentes dependiendo de si edita principalmente scripts, documentación o archivos que deben compilarse.

A modo de ejemplo, yo uso zencodingpara la edición de HTML / CSS de vez en cuando, snipmatepara Textmate-como fragmentos, y un par de pitón-complementos relacionados ( pyflakes, pep8, vimpdb, etc.) para Python codificación, que es lo que hago con más frecuencia.

Luego, hay otros complementos que no uso con frecuencia, pero todavía los encuentro útiles de vez en cuando, como Dpastey ConqueTerm.

Aún así, para mí, las características más útiles de Vim están integradas (deshacer en función del tiempo, navegación rápida, filtros de rango, etc.), cosas que no pude encontrar (o al menos no son tan fáciles de acceder ) en IDEs. Entonces, una vez que configure su Vim para que tenga los bits y piezas de un IDE que realmente necesita ( snipmate, ctags...), puede obtener el beneficio de los entornos IDE y de consola.

Mi uso de Vim es solo de consola, así que no puedo decir qué tan útiles son estas herramientas con Gvim.

Sin embargo, a pesar de toda la bondad del complemento, todavía me encuentro corriendo !grep ...o de ^Z + find ...vez en cuando.


3

Hago toda mi programación en vim. De hecho, me resulta más fácil que cualquier IDE que haya usado. Puede tener múltiples archivos abiertos al mismo tiempo, incluso en la misma pantalla (busque pestañas y ventanas). Por lo general, estoy trabajando en X, por lo que tengo varias (6) pantallas xterm abiertas: una para archivos c en vim (varias en pestañas), otra para encabezados en vim (también pestañas) y ventanas que no son vim: compilar, depurar , configuración, etc. Incluso cuando estoy en una consola pura, puedo usar pestañas, ventanas y plegado de código para ver lo que necesito, y puedo compilar e incluso ver páginas de manual sin salir de vim, solo necesita saber el comandos correctos Y hay tantos, estoy seguro de que ni siquiera he dominado la mitad de ellos. Y es difícil superar la búsqueda y el reemplazo de vim.


1

Muchas aplicaciones a gran escala han sido (mías, al menos, dos;), y supongo que muchas más se escribirán completamente en Vim. Los IDE como tales siguen siendo una innovación bastante moderna , por así decirlo.

Sin embargo, el simple vanilla vi (ouch) o Vim son un poco escasos. Conocer a Vim y pensar en algunas de sus formas ayuda un poco, y los complementos ayudan mucho , para lo cual www.vim.org es una fuente inagotable. Algunos específicos del lenguaje que está utilizando y otros generales (para comentar, para examinar archivos, para ...) lo convierten rápidamente en un entorno de desarrollo muy rápido. Después de todo (y algunos seguramente argumentarán) un IDE es solo un editor con complementos empaquetados en una interfaz más agradable. Tampoco hay muchas cosas gráficas en un IDE.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.