Vim

De Wikipedia, la enciclopedia libre
(Redirigido desde «GVim»)
Vim
Versión gráfica GVim 9.0
Vim 9.0
Información general
Tipo de programa Editor de texto
Desarrollador Bram Moolenaar & et al.
Modelo de desarrollo Abierto
Lanzamiento inicial 2 de noviembre de 1991 (32 años, 5 meses y 21 días)
Licencia Vim License[1]​ (GPL-compatible), charityware
Estado actual Activo
Idiomas Multilingüe
Información técnica
Programado en C, Vimscript
Plataformas admitidas Mutiplataforma
Versiones
Última versión estable 9.1 (info) ( 02 de enero de 2024 (3 meses y 21 días))
Archivos editables
Vim swap
Asistencia técnica
Comunitaria
Enlaces

Vim (Vi IMproved) es un editor de texto de código abierto, libre y multiplataforma, disponible en la mayoría de sistemas tipo Unix y una versión mejorada del editor de texto vi.

Antecedente[editar]

STEVIE (acrónimo en inglés de "ST Editor for VI Enthusiasts", que en español significa, "Editor ST para Entusiastas de VI") fue un editor de texto y un clon de vi que surgió desde cero gracias al trabajo de Tim Thompson. Este editor fue concebido para operar en computadoras personales Atari ST. Thompson compartió públicamente el código en junio de 1987 a través del grupo de noticias comp.sources.unix en Usenet. Tras la publicación, Thompson no continuó con el desarrollo debido a otras prioridades en su vida. Un año después, en junio de 1988, Tony Andrews tomó el código de STEVIE, realizó cambios significativos, hizo mejoras y publicó la nueva versión bajo el nombre 'stevie.tony'. Esta versión sentó las bases para la primera edición de Vim.

Historia[editar]

En el año 1988, el ingeniero neerlandés Bram Moolenaar adquirió una computadora Commodore Amiga con el deseo de seguir utilizando vi, un editor de texto al que estaba acostumbrado debido a su experiencia en Unix. Sin embargo, enfrentó un desafío, ya que no existía en ese momento ningún clon de vi disponible para el sistema Amiga que cumpliera con sus expectativas, y no podía usar el código de vi porque estaba basado en el código fuente del editor de texto ed, que era propiedad de AT&T. En teoría, significaba que el código fuente de vi solo podía ser usado por aquellos con una licencia de AT&T sobre dicho código.

En ese año, tuvo la fortuna de descubrir el código de STEVIE 1.0, un clon de vi al que hacían falta comandos y tenía errores. Bram tomó la iniciativa de trabajar en este código, dedicándose a corregir los errores y agregar los comandos que faltaban para lograr una imitación de vi.

Como resultado de este proceso, surgió la primera versión no oficial de Vim, denominada VIM 1.0. Inicialmente, el nombre se escribía en mayúsculas, y era el acrónimo de "Vi IMitation" (Imitación de Vi), y su objetivos principal era lograr una versión fiel a vi para la plataforma Amiga.

En 1991, Vim 1.14 hizo su entrada como la primera versión pública. Fue incluida en el disco número 591 en la colección de software libre y de dominio público para la plataforma Amiga conocida como Fred Fish. El siguiente paso clave en su desarrollo llegó con Vim 1.22, que marcó un hito importante al convertirse en la primera versión que funcionaba en múltiples plataformas, brindando soporte tanto para Unix como para MS-DOS. Con este avance, no solo cambió su capacidad de adaptación, sino también su nombre. VIM fue renombrado como Vim, y su acrónimo pasó a ser el significado de "Vi IMproved" (Vi Mejorado).

Este cambio de denominación marcó de manera oficial el inicio del proyecto Vim. A partir de este punto, Vim inició un proceso constante de evolución y expansión, consolidándose como un conjunto de comandos, funciones y nuevas características que superaron a su predecesor vi.

Evolución de Vim[editar]

Vim ha experimentado una notable evolución a lo largo de los años. A continuación una tabla que resume las diferentes versiones de Vim a través del tiempo, junto con las características principales que se han introducido en cada versión.

Año Versión Características importantes
1988 Vim 1.0 Vi IMitation para Amiga
1991 Vim 1.14 Vim hace su debut[2]
1992 Vim 1.22 Portado a Unix y renombrado como Vi IMproved
1994 Vim 3.0 Soporte para ventanas múltiples
1996 Vim 4.0 Interfaz gráfica de usuario
1998 Vim 5.0 Resaltado de sintaxis
2001 Vim 6.0 Texto plegable y soporte multilingüe
2006 Vim 7.0 Corrector ortográfico y soporte de pestañas
2016 Vim 8.0 Comunicación entre procesos en segundo plano y temporizador asíncrono
2022 Vim 9.0 Introducción de Vim9 Script como nuevo lenguaje y función de autocompletado de comandos en un menú emergente
Figura 3: Vim 7: Corrección ortográfica y autocompletado de texto.

Principales funcionalidades[editar]

  • Corrector ortográfico integrado
  • Completador automático de texto
  • Navegación por pestañas
  • Ventanas múltiples, que dividen el área de edición horizontal o verticalmente.
  • Resaltado de sintaxis dependiente del lenguaje de programación o de etiquetas utilizado
  • Órdenes deshacer y rehacer
  • Comprensión de más de 200 sintaxis diferentes
  • Lenguaje de scripting para programar extensiones
  • Completado de órdenes, palabras y nombres de ficheros
  • Compresión y descompresión de ficheros, que posibilita editar ficheros comprimidos
  • Reconocimiento de formatos de fichero y conversión entre los mismos.
  • Historial de órdenes ejecutadas
  • Grabación y reproducción de macros
  • Guardado de la configuración entre sesiones
  • Plegado automático y manual de código
  • Interfaz gráfica opcional
  • Altamente configurable y personalizable
  • Casi 100% compatible con vi, pero sin muchos de sus defectos

Ayuda de Vim[editar]

Vim dispone de una excelente documentación, que se rige por la máxima Una característica no documentada es una característica inútil. La documentación, en formato texto, es muy amplia y fácil de entender. El usuario accede mediante una búsqueda a la descripción de varias funcionalidades que pueden solucionar su problema. A través del resaltado de la sintaxis propia de la ayuda de Vim se resaltan las palabras clave (Figura 3).

Mediante combinaciones de teclas ejecutadas cuando el cursor está sobre una palabra clave se puede navegar por la ayuda, volviendo atrás en caso necesario. En la versión gráfica también se puede utilizar el ratón para este propósito. La orden :helpgrep es importante, pues permite al usuario buscar una palabra en los textos de la ayuda, sin que sea necesario que se trate de una palabra clave (Figura 4). Completan la ayuda una versión en HTML disponible para su consulta en internet y una extensa lista de preguntas frecuentes (FAQ).

Ventajas para programadores[editar]

Vim es muy personalizable y extensible, lo que lo hace muy atractivo para usuarios que demandan gran cantidad de control y flexibilidad en la edición de texto.[3]​ La entrada de texto se facilita con una serie de funciones diseñadas para incrementar la eficiencia del teclado. Los usuarios pueden ejecutar comandos complejos como el «mapeado» de teclas, que puede personalizarse y extenderse. La característica de grabación permite la creación de macros para automatizar secuencias de pulsaciones y llamar funciones internas o definidas por el usuario. Las «abreviaturas», similares a las macros y los mapeos, facilitan la expansión de cadenas de texto cortas hacia largas y pueden usarse también para corregir errores. Vim también tiene un modo fácil para los usuarios que buscan un editor sencillo.[4]​ Hay muchas extensiones (plugins) disponibles[5]​ que añaden o extienden funcionalidades como comprobación de sintaxis y errores semánticos, integración con Git, mostrar colores en CSS. Estos scripts complejos normalmente están escritos en el lenguaje interno «vimscript» (conocido también como VimL),[6]​ pero también pueden escribirse en otros lenguajes.

Vim es un editor hecho por programadores para programadores. Para facilitar la programación, Vim dispone de un modo "editar, compilar, corregir". De la misma forma que los entornos de desarrollo integrados, puede editar el código fuente además llamar a un compilador externo, e interpretar sus resultados. Si hay errores de compilación, éstos se muestran en una ventana. Los mensajes de error dirigen al usuario a la zona en la que se han encontrado para poder así corregirlos. Entonces vuelve a empezar el ciclo "editar, compilar, corregir" y, si es necesario, corregir nuevos errores. El trabajo del programador también se ve facilitado por el resaltado de sintaxis y la funcionalidad de plegado de código (véase ':help quickfix').

Comparación de ficheros[editar]

Comparar dos (o más) versiones de un fichero es una tarea frecuente para algunos usuarios. Vim ofrece una solución simple, las dos versiones diferentes del fichero se muestran en dos ventanas contiguas en las que se resaltan las diferencias (Figura 5). De esta forma se pueden ver coloreadas las diferencias intercaladas en las versiones. Por ejemplo, las eliminaciones aparecen en rojo y las nuevas inserciones en violeta.

Hay órdenes que permiten situar el cursor en las diferencias siguientes y anteriores ([c y ]c), además de volcar estas diferencias hacia el otro archivo (do y dp).

El lenguaje interpretado de Vim[editar]

Vim dispone de un lenguaje interpretado, o de scripting, para programar nuevas funcionalidades, mediante el que se pueden automatizar operaciones particulares demasiado complejas para realizarlas con una macro. Los scripts pueden ser leídos e interpretados mediante la orden :source.

El lenguaje se llama vimscript o VimL)[7][8]

Las macros de Vim pueden contener una secuencia de comandos del modo normal, pero también pueden invocar comandos exteriores o funciones escritas en vimscript para tareas más complejas. Casi todas las extensiones (plugins) de las funciones troncales de Vim están escritas en vimscript, pero también pueden usar otros lenguajes como Perl,[9]Python,[10]Lua,[11]Ruby,[12]Tcl,[13]​ o Racket.[14]

Estas extensiones pueden instalarse manualmente o mediante un gestor de extensiones como Vundle, Pathogen, o Vim-Plug.

Los ficheros de vimscript se guardan como texto plano, similar a cualquier otro código, y la extensión suele ser .vim. Una excepción a eso es la del fichero de configuración de Vim que tiene la extensión .vimrc.

Ejemplo[editar]

" This is the Hello World program in Vim script.
echo "Hello, world!"
" This is a simple while loop in Vim script.
let i=1
while i < 5
 echo "count is" i
 let i +=1
endwhile
unlet i

Modos[editar]

Vim es un editor modal, lo que significa que se puede trabajar en diferentes modos para realizar una tarea determinada. Para ver en qué modo se encuentra Vim se debe de tener activada la opción showmode. A continuación se describen los seis modos de Vim.[15]​ Los tres primeros son los modos del vi original. Los cinco modos adicionales no deben entenderse por separado, sino en combinación con el modo base. Véase también la ayuda de Vim a este respecto: ':help vim-modes'.

Modo comandos[editar]

Vim empieza en modo comando, también conocido como modo normal. En este modo se pueden emplear combinaciones de teclas para, por ejemplo, copiar líneas y trabajar en el formato del texto. Éste es el modo central, desde el que se cambia a los otros modos.[15]​ Si no se sabe qué se está haciendo, pulsando dos veces la tecla Escape siempre se puede volver al modo normal. Si ya se estaba en modo normal y tanto la configuración de Vim como la del terminal lo permiten, Vim emite un pitido.[16]

Modo inserción[editar]

En modo inserción cuando se pulsan las teclas se edita el texto como en otros editores. Se puede cambiar del modo comandos al modo inserción pulsando la tecla i. Hay un gran abanico de comandos para pasar al modo inserción, que difieren sustancialmente, pues permiten por ejemplo editar al final de la línea, en un punto concreto del texto, editar borrando una palabra, entre muchas otras.[17]​ Un usuario experto puede sacar un gran provecho de la existencia de esta variedad de órdenes.

En el modo inserción todas las teclas tienen alguna función además de la mera inserción, que se activan pulsando simultáneamente las teclas Tecla control o Mayúsculas. La tecla Esc es muy importante en modo inserción, pues permite cambiar de modo inserción a modo comandos.

Cambiando al modo comandos para realizar ciertas tareas se incrementa en gran medida la eficiencia en la edición, y se puede aprovechar la potencia completa de Vim.

Modo línea de órdenes[editar]

Vim version 7.4.1689 corriendo en GNU Linux Ubuntu 16.04

A este modo se accede pulsando la tecla dos puntos :. Tras los dos puntos se pueden introducir órdenes complejas, como por ejemplo buscar y reemplazar con expresiones regulares. Pulsando la tecla Esc se puede volver al modo órdenes. Las búsquedas se pueden realizar con la orden / (hacia adelante) y ? (hacia atrás). También se pueden filtrar líneas mediante !.[18]

Modo visual[editar]

Este modo es una mejora respecto a vi. Mediante unas ciertas combinaciones de teclas en combinación con las teclas de movimiento del cursor, se puede marcar un área de texto, ya sea un grupo de líneas o un bloque. Una vez se tiene el texto marcado se pueden usar órdenes del modo comandos para manipularlo. Las operaciones que se pueden realizar en este modo son más simples que las del modo comandos.[19]

Modo selección[editar]

Este modo empieza como el modo visual, pues hay que seleccionar un bloque de texto. Tras la selección, se puede cambiar al modo selección mediante Control-G. Una vez en el modo, si se pulsa una tecla imprimible, el texto seleccionado se borra, se termina el modo selección y aparece el símbolo correspondiente a la tecla pulsada. La selección se puede extender pulsando mayúsculas y las teclas de flechas, el comportamiento habitual en los programas de Microsoft Windows. Este modo se puede finalizar pulsando la tecla Escape.[20]

Modo Ex[editar]

Este modo se asemeja al modo línea de órdenes, con la diferencia de que tras la ejecución de una orden no se vuelve al modo comandos. Se entra en este modo pulsando Q y se termina con vi. En este modo Vim imita al editor de UNIX ex, que manipulaba el texto línea a línea debido a las limitaciones de la época, en lugar de editar toda la página.[21]

gVim[editar]

Captura de gVim, una de las implementaciones de Vim, editando un artículo de Wikipedia.

gVim es una versión gráfica del editor de textos Vim. gVim funciona con las librerías gtk. Mantiene las funcionalidades del Vim, y añade menús y un entorno gráfico (funciona fuera de la consola/terminal).

Su principal ventaja, para los nuevos usuarios, los menús desplegables implican una curva de aprendizaje algo menos dura. Su principal desventaja es que no está instalado por defecto en todos los sistemas (por ejemplo, no está en los servidores sin entorno gráfico).

Sistemas operativos[editar]

Una virtud de Vim es que se puede ejecutar en muchos sistemas operativos. Esto es importante para usuarios, como por ejemplo administradores de sistemas que deben trabajar en muchas plataformas distintas. Se puede ejecutar en los siguientes sistemas operativos: AmigaOS, Atari MiNT, BeOS, DOS, GNU/Linux, Mac OS, NextStep, OS/2, OSF, RISC OS, IRIX, Unix (muchas variedades, como por ejemplo BSD, AIX y HP-UX), VMS, y Windows 3.x/95/98/ME/2000/NT/XP.

Pros y contras[editar]

Críticas[editar]

Las críticas se aplican a Vi y Vim por igual, pues están basados en el mismo concepto y sus modos de operación son completamente diferentes de la mayoría los editores convencionales actuales. Sobre todo conciernen a la separación de las operaciones en distintos modos y la necesidad de aprender numerosas combinaciones de teclas, sin las que no es posible trabajar de forma eficiente. Actualmente la falta de empleo del ratón como complemento extra a las combinaciones de teclas se considera como un anacronismo, pues puede llevar al usuario ocasional a la frustración. Solo tras un aprendizaje prolongado se consigue aumentar la productividad.

Ventajas[editar]

Fondo de escritorio con el logotipo de Vim.

La mayoría de los usuarios que usan Vim aseguran que este editor incrementa su productividad comparándolo con editores más simples una vez se ha superado la curva de aprendizaje.[22]​ Las combinaciones de teclas se pueden memorizar empleando métodos mnemotécnicos, pues guardan relación con palabras inglesas. La complejidad intrínseca de aprender las instrucciones se ve recompensada por la mejora en la eficiencia. Los usuarios expertos pueden, usando unas pocas combinaciones de teclas, copiar texto, formatearlo u ordenarlo de muchas formas diferentes, que solo se pueden realizar en la mayoría de editores mediante operaciones considerablemente más complejas. Basta con un poco de experiencia para notar que las combinaciones de instrucciones que permiten ediciones de texto complejas se facilitan con Vim. Por otra parte las nuevas versiones permiten emplear el ratón e incorporan menús gráficos, que facilitan trabajar con Vim de una forma similar a la de otros editores. A menudo se instala como editor base por su pequeño tamaño y su rapidez en plataformas con recursos limitados basadas en UNIX.[23]

Premios[editar]

Vim fue el ganador de los Readers' Choice Awards de Linux Journal en la categoría Favorite Text Editor desde 2001 a 2005 y obtuvo el Slashdot Bernie Award como el Mejor editor de texto Open Source así como en 1999 el Linuxworld Editors' Choice Award.[24]

Licencia[editar]

Vim en la consola

Vim se distribuye bajo una licencia Charityware (del inglés charity: caridad) compatible con Licencia pública general de GNU. y por sus siglas en inglés GPL (General Public License). Esto significa que Vim se rige por las mismas condiciones, pero anima a los usuarios a realizar donaciones para los niños huérfanos de Uganda a través de la organización ICCF Holland.[25]

Desarrollo y comunidad[editar]

Vim es desarrollado por Bram Moolenaar y muchos voluntarios. La página de ayuda de Vim[26]​ de la versión actual menciona a más de 50 colaboradores. Además hay un gran número de personas que han ayudado, no solo en el desarrollo del software, sino también portándolo a otros sistemas operativos, probando nuevas versiones, reportando bugs, redactando documentación y traduciendo el sistema de ayuda. También contestan a las preguntas de los usuarios, adaptando Vim a otros proyectos y muchas otras cosas.

Todos los usuarios pueden aportar realizando scripts[27]​ o dando consejos.[28]​ Hay una lista de correo muy activa, útil tanto para nuevos usuarios como para los experimentados en la que se dan respuestas rápidas y competentes.

Influencia en otros programas[editar]

  • qutebrowser (Navegador web que se maneja por teclado).
  • VNote (Aplicación para tomar notas).
  • Kate (Posee un modo para editar en modo VI)
  • vimium (Extensión para Chrome para usar atajos estilo VIM)
  • ranger (Gestor de archivos estilo VIM)
  • Geany (Tiene un modo con atajos tipo VIM)
  • vit (Interfaz de TaskWarrior con accesos estilo VIM)
    Configuración de Kate para usarlo como Vi/VIM

Diferencias con el editor Vi[editar]

Vim agrega funcionalidades muy importantes respecto al antiguo editor Vi, algunas de estas mejoras son:[29]

  • La posibilidad de deshacer múltiples veces consecutivamente.
  • Permite trabajar con más de una ventana y archivo a la vez.
  • Se pueden usar las flechas del teclado durante el modo de Inserción.
  • Es capaz de grabar comandos (macros).
  • El modo visual permite seleccionar texto de manera fácil y potente.
  • Puede trabajar convenientemente con texto encerrado entre comillas, paréntesis, marcas html, etc.
  • Sistema de ayuda integrado.
  • Historial de comandos.
  • Expansión de comandos.
  • Desplazamiento horizontal

Huevo de Pascua[editar]

Huevo de Pascua en el editor de texto Vim.

El editor de texto Vim contiene al menos un huevo de Pascua como homenaje a la Guía del autoestopista galáctico del escritor Douglas Adams. La orden :help 42 produce el texto:

«What is the meaning of life, the universe and everything? 42. Douglas Adams, the only person who knew what this question really was about is now dead, unfortunately. So now you might wonder what the meaning of death is...»

¿Cuál es el sentido de la vida, el universo y todo? 42. Douglas Adams, la única persona que sabía de qué iba esta pregunta, ahora está muerta, desafortunadamente. Así que ahora te podrías preguntar cuál es el sentido de la muerte...»)[30]

Referencias[editar]

  1. https://vim-jp.org/vimdoc-en/uganda.html#iccf (en inglés)
  2. https://philreichert.org/book/fred-fish/disk-591.html#Vim Fred Fish Disk 59
  3. Melendez, Steven. «Why Vim, An '80s Text Editor, Is Still The UI Of Choice For Power Users». FastCompany. Consultado el 13 de mayo de 2020. 
  4. «Tips: Making Vim easy». Linux.com. 10 de abril de 2007. Consultado el 6 de mayo de 2020. 
  5. «Vim Awesome». vimawesome.com (en inglés). Consultado el 13 de mayo de 2020. 
  6. «Vim documentation: usr_41». vimhelp.org. 
  7. Klein, Benjamin. «The VimL Primer: Edit Like a Pro with Vim Plugins and Scripts by Benjamin Klein | The Pragmatic Bookshelf». Consultado el 13 de mayo de 2020. 
  8. «Vim documentation: usr_41». vimhelp.org. 
  9. Verdoolaege, Sven; Gerassimof, Matt. «Vim documentation: if_perl». Consultado el 13 de mayo de 2020. 
  10. Moore, Paul. «Vim documentation: if_pyth». Consultado el 13 de mayo de 2020. 
  11. Carvalho, Luis. «Vim documentation: if_lua». Consultado el 13 de mayo de 2020. 
  12. Maeda, Shugo. «Vim documentation: if_ruby». Consultado el 13 de mayo de 2020. 
  13. Wilken, Ingo. «Vim documentation: if_tcl». Consultado el 13 de mayo de 2020. 
  14. Khorev, Sergey. «Vim documentation: if_mzsch». Consultado el 13 de mayo de 2020. 
  15. a b Moolenaar, Bram (8 de diciembre de 2010). «Vim documentation: intro». vimdoc.sourceforge.net. Consultado el 13 de mayo de 2020. 
  16. Moolenaar, Bram (8 de diciembre de 2010). «Vim documentation: Normal mode». vimdoc.sourceforge.net. Consultado el 13 de mayo de 2020. 
  17. Moolenaar, Bram (8 de diciembre de 2010). «Vim documentation: insert-mode». vimdoc.sourceforge.net. Consultado el 13 de mayo de 2020. 
  18. Moolenaar, Bram (8 de diciembre de 2010). «Vim documentation: command-line». vimdoc.sourceforge.net. Consultado el 13 de mayo de 2020. 
  19. Moolenaar, Bram (8 de diciembre de 2010). «Vim documentation: Visual-mode». vimdoc.sourceforge.net. Consultado el 13 de mayo de 2020. 
  20. Moolenaar, Bram (8 de diciembre de 2010). «Vim documentation: Select-mode». vimdoc.sourceforge.net. Consultado el 13 de mayo de 2020. 
  21. Moolenaar, Bram (8 de diciembre de 2010). «Vim documentation: Ex-mode». vimdoc.sourceforge.net. Consultado el 13 de mayo de 2020. 
  22. «Why I use Vim - Pascal Precht's Blog». Why I use Vim - Pascal Precht's Blog (en inglés). Consultado el 4 de octubre de 2019. 
  23. Beyer, Casper (11 de octubre de 2017). «Why I Still Use Vim». Medium (en inglés). Consultado el 4 de octubre de 2019. 
  24. Error en la cita: Etiqueta <ref> no válida; no se ha definido el contenido de las referencias llamadas Bram
  25. «ICCF Holland - helping children in Uganda». Archivado desde el original el 21 de septiembre de 2019. Consultado el 30 de enero de 2013. 
  26. «:help credits'». Consultado el 30 de enero de 2013. 
  27. Página oficial de scripts de Vim
  28. Vim-Tips
  29. «Vim online doc: Vim FAQ». vimdoc.sourceforge.net. Consultado el 4 de octubre de 2019. 
  30. kcbhiw (24 de julio de 2001). «Vim (Vi Improved) Response to Meaning of Life». The Easter Egg Archive (en inglés). Consultado el 10 de mayo de 2020. 

Bibliografía[editar]

Enlaces externos[editar]

Lista de correo[editar]

<vim@vim.org> – véase también: Instrucciones de la Lista de Correo

Enlaces generales[editar]

Documentación[editar]