¿Cuáles son las mejores herramientas de programación de propósito general para complementar Vim? [cerrado]

22

He estado usando Vim como mi editor de texto por un tiempo y siento que estoy tomando el camino más largo para hacer cualquier cosa. Utilizo ctags para etiquetar mi código base para la navegación y uso grep (aunque de manera ineficiente) para encontrar dónde se utilizan ciertos métodos. Pero tengo la sensación de que hay algunas herramientas muy útiles que no conozco que podrían hacerme más productivo.

¿Cuál es la mejor pila de software que podría usar para la programación general que complementaría a Vim? ¿Cómo navega por una base de código, ejecuta make, envía cambios a su sistema de control de fuente, etc.? ¿Tienes una segunda consola abierta al lado de Vim?

Louis Salin
fuente
2
Vim mismo. Tal vez no esté utilizando los complementos / scripts correctos para el trabajo. Depende de qué tipo de programación esté haciendo, qué idioma, qué otras herramientas necesita, etc.
bitek
No estoy especificando ningún idioma para no influir en las respuestas que obtendré. Realmente no estoy buscando complementos de Vim, aunque son útiles.
Louis Salin
Esta presentación me pareció muy útil: zmievski.org/2010/06/vim-for-programmers-on-slideshare
gabe.
Hice de esto un wiki comunitario. Me di cuenta de que no hay una mejor respuesta para mi pregunta. ¡Gracias a todos por sus respuestas!
Louis Salin el

Respuestas:

8

Una gran característica de vim es la facilidad de integración con los comandos de shell existentes. Algunas de las herramientas externas más útiles son las que se incluyen en coreutils y otras herramientas simples de manipulación de texto. Por ejemplo, podemos obtener el número de líneas en un archivo con:

:! wc -l %

o el número de palabras:

:! wc -w %

Cualquier comando que funcione en el shell funcionará aquí. Esto se puede combinar poderosamente con el comando :read( :r) para poner la salida del comando en el archivo. Por ejemplo:

:r !wc -l %

Colocará el recuento de líneas de palabras en el archivo que está editando.

Otra ventaja de esto es reemplazar el texto que está editando actualmente con la salida de uno de estos comandos. Por ejemplo, puede formatear todo el archivo parejecutando el comando:

:% !par
xoebus
fuente
5

Encuentro NERDtree indispensable para navegar a través de mi base de código. Además de eso, vale la pena invertir algo de tiempo en dominar el movimiento de sus buffers / ventanas.

aryeh
fuente
+1 para la referencia a este fantástico complemento. ( github.com/scrooloose/nerdtree )
noffle
4

Sea cual sea su idioma, querrá usar una función llamada ctags que le permite navegar por las definiciones de origen. Esto requiere una herramienta externa para generar archivos TAGS que son utilizados por VIM para descubrir las ubicaciones de varias definiciones de código dentro de un proyecto.

Obtenga la exuberante herramienta ctags , funciona para muchos idiomas y es muy fácil de usar.

de VIM :help ctags

ctags creará un índice de todos los identificadores en un árbol fuente. Luego puede usar los comandos de etiqueta para navegar por su árbol de origen. ver :help tag-commands. Lo más fácil es colocar el cursor sobre una palabra clave y presionar CTRL- ]. Para volver a donde viniste, presiona CTRL:T

Más allá de esto, es posible que desee ver algunos de los consejos y mejoras de VIM discutidos aquí , es una discusión muy completa de algunas de las cosas que se pueden hacer para mejorar la experiencia de un vimmer.

chillitom
fuente
Mencioné en mi pregunta que estaba usando ctags, ¡pero gracias por la respuesta de todos modos! :)
Louis Salin
4

Vim es una herramienta muy poderosa, estoy seguro de que todos ustedes ya lo saben. Comenzará a obtener un aumento de productividad utilizando vim en un par de semanas. Pero nunca saturarás tu conocimiento de Vim. Entonces, por mi parte, siempre estoy buscando formas nuevas y eficientes de hacer las cosas en Vim. Hay un tipo llamado Derek Wyatt que ha hecho algunas excelentes capturas de pantalla sobre el uso de Vim, y también sobre los complementos que usa.

Algunos de los complementos que uso

  1. command-t Esto hace que navegar por los archivos sea muy fácil, y es muy inteligente .

    El complemento Command-T proporciona un mecanismo extremadamente rápido e intuitivo para abrir archivos con un número mínimo de pulsaciones de teclas. Se llama "Command-T" porque está inspirado en la ventana "Ir a archivo" vinculada a Command-T en TextMate.

  2. fuzzyfinder Utilizo esto principalmente para broswer buffers y cambiar el directorio actual.

    FuzzyFinder proporciona formas convenientes de llegar rápidamente al búfer / archivo / comando / marcador / etiqueta que desee. FuzzyFinder busca con el patrón difuso / parcial al que convirtió un patrón ingresado

  3. NERDTree Este es el mejor complemento de navegador de archivos para vim.

    El árbol NERD le permite explorar su sistema de archivos y abrir archivos y directorios. Le presenta el sistema de archivos en forma de árbol que manipula con el teclado y / o el mouse. También le permite realizar operaciones simples del sistema de archivos.

  4. XPTemplate El mejor plugin de plantillas del mundo.

    Motor de fragmentos de código para Vim, con biblioteca de fragmentos. XPTemplate le permite escribir códigos de manera suave, rápida y cómoda.

  5. rails.vim Si haces cosas de desarrollo de rails, esto es indispensable.

    TextMate puede ser la última moda para desarrollar aplicaciones de Ruby on Rails, pero Vim es para siempre. Este complemento ofrece las siguientes características para el desarrollo de aplicaciones Ruby on Rails.

  6. NerdCommenter Hace que comentar en cualquier tipo de código sea fácil.

Y esos son solo algunos de los complementos que utilizo. Para descargar todos los complementos con mi vimrc, consulte mis archivos de puntos

Khaja Minhajuddin
fuente
3

Hay un gran complemento para VIM que verifica la sintaxis de Syntastic . También hay muchas otras herramientas disponibles para la gestión de archivos, construcción, etc. Vaya a IRC #vim en freenode.net, hay mucha gente útil allí.

Kris
fuente
3

Mi favorito es cscope. Si ha compilado vim con soporte de cscope, puede usar directamente los comandos de cscope desde VIM. por ejemplo, buscando archivos incluidos, funciones llamadas por la función xyz, etc. Lo he intentado con un repositorio de código fuente muy grande. Esto ayuda mucho.

http://cscope.sourceforge.net/cscope_vim_tutorial.html

Hemant
fuente
1

Si está programando en cualquiera de los lenguajes compatibles con GCC (C, C ++, Java, Fortran), entonces Clewn es un gran complemento que integra el depurador GDB en VIM. De hecho, he encontrado que es una de las mejores interfaces para GDB que hay.

chillitom
fuente
0

Normalmente configuro una screensesión para cada proyecto. Vim está en la ventana 0, y uso la ventana 1 para una sesión de shell. Si estoy codificando en un idioma que tiene un REPL decente, generalmente lo ejecuto en la ventana 2. Por supuesto, no necesita screenhacer esto; puede hacerlo con diferentes ventanas de terminal o con pestañas en un terminal multitab. Creo screenque es más estable que otras alternativas: si su aplicación de terminal se bloquea, puede iniciar otra terminal y volver a conectarse a su screensesión aún en ejecución . screentambién es muy rápido para navegar una vez que lo aprende (al igual que vim).

Principalmente termino usando la sesión de shell para actividades complicadas de control de versiones como rebase o fusión: se pueden hacer cosas más simples desde la línea de comando de vim (por ejemplo, la :!git commit % -m 'Added info aboutpantalla .') o usando el complemento fugitivo . Encuentro los fugitivos :Gmove(cambiar el nombre del búfer actual tanto en vim como en el índice git) e :Gdiff(invocar vimdiff en el búfer actual con un punto anterior en su historia) particularmente útiles. También puede hacer cosas como crear un mensaje de confirmación en un búfer de memoria virtual, copiar texto de varias partes de su código y luego confirmar con:%!git commit -F /dev/stdin

También usaré la sesión de shell para pruebas funcionales / de integración si eso es aplicable a lo que sea que esté trabajando, por ejemplo, si estoy escribiendo una utilidad de línea de comandos.

La funcionalidad de corrección rápida de Vim es útil para la depuración, aunque parece que se requiere un complemento diferente para cada idioma en el que desee trabajar. También parecen usar una variedad de técnicas de invocación, mapeo a teclas de función o secuencias de teclas que comienzan con \o ,, o a comandos personalizados, o al ser invocado automáticamente cuando se guarda un búfer. Hasta ahora no me he molestado en averiguar esto, y solo leo los resultados de la prueba unitaria o de la pelusa en un búfer de memoria virtual, por ejemplo :r !python -m doctest whatever.py. Modifique el código, vuelva al búfer de memoria uvirtual, deshaga, luego presione :ry la flecha hacia arriba (la mayoría de las veces) para recuperar ese comando. Pero puede valer la pena buscar un complemento para esto, dependiendo del idioma en el que trabaje.

Para lenguajes compilados populares como C, java, etc., :makese realizará una compilación y el soporte para la lista de soluciones rápidas está bien establecido. Entonces puede hacer :copenpara mostrar el búfer de corrección rápida. Mostrará una lista de errores, uno por línea; golpear Enteren una línea saltará su otra ventana a ese punto en ese archivo.

Si está trabajando con varios proyectos a la vez, puede hacer los :lmakearreglos para que una lista de errores se almacene en la lista de ubicaciones : es como la lista de soluciones rápidas, pero está asociada con una sola ventana en lugar de ser un singleton dentro de su vim instancia. :lopenabrirá una lista de ubicaciones para la ventana actual.

intuido
fuente