Vim (editor de texto)

Compartir Imprimir Citar

Vim (una contracción de Vi IMproved) es un programa editor de texto gratuito y de código abierto basado en pantalla. Es un clon mejorado del vi de Bill Joy. El autor de Vim, Bram Moolenaar, derivó Vim de un puerto del editor Stevie para Amiga y lanzó una versión al público en 1991. Vim está diseñado para usarse tanto desde una interfaz de línea de comandos como una aplicación independiente en un interfaz gráfica del usuario.

Desde su lanzamiento para Amiga, el desarrollo multiplataforma lo ha hecho disponible en muchos otros sistemas. En 2006, fue votado como el editor más popular entre los lectores de Linux Journal; en 2015, la encuesta de desarrolladores de Stack Overflow encontró que es el tercer editor de texto más popular y, en 2019, el quinto entorno de desarrollo más popular.

Historia

El precursor de Vim, Stevie (editor de ST para entusiastas de VI), fue creado por Tim Thompson para Atari ST en 1987 y desarrollado por Tony Andrews y G.R. (Fred) Walter.

Basando en Stevie, Bram Moolenaar comenzó a trabajar en Vim para la computadora Amiga en 1988, con el primer lanzamiento público (Vim v1.14) en 1991.

En el momento de su primer lanzamiento, el nombre "Vim" era un acrónimo de "Vi IMitation", pero cambió a "'Vi IMproved" finales de 1993.

Historia de la liberación
Fecha Versión Cambios y adiciones
June, 1987 N/A Tim Thompson publica Stevie (redactor ST para entusiastas VI), un clon vi limitado para el Atari ST, publicando la fuente en Usenet.
Junio de 1988 N/A Tony Andrews mejora Stevie, y lo envía a Unix y OS/2, liberando la versión 3.10 en Usenet.
1988 1.0 Bram Moolenaar crea Vi IMitation para el Amiga, basado en Stevie, nunca publicado públicamente
2 de noviembre de 1991 1.14Primer lanzamiento público para el Amiga en el disco Fred Fish #591
1992 1.22 Puerto a Unix, nunca publicado públicamente. Vim ahora compite con vi.
14 de diciembre de 1993 2.0 Esta es la primera versión usando el nombre Vi IMproved.
12 de agosto de 1994 3.0 Soporte para múltiples ventanas
29 de mayo de 1996 4.0 Interfaz gráfica de usuario
19 de febrero de 1998 5.0Notas de sintaxis, scripting básico (funciones definidas por el usuario, comandos, etc.)
6 de abril de 1998 5.1 Corrección de errores, varias mejoras
27 de abril de 1998 5.2 Soporte de línea larga, navegador de archivos, diálogos, menú popup, modo selecto, archivos de sesión, funciones definidas por el usuario y comandos, Interfaz Tcl, etc.
31 de agosto de 1998 5.3 Corrección de errores, etc.
25 de julio de 1999 5.4 Cifrado básico de archivos, varias mejoras
19 de septiembre de 1999 5,5 Corrección de errores, varias mejoras
16 de enero de 2000 5.6 Nuevos archivos de sintaxis, correcciones de errores, etc.
24 de junio de 2000 5.7 Nuevos archivos de sintaxis, correcciones de errores, etc.
31 de mayo de 2001 5.8 Nuevos archivos de sintaxis, correcciones de errores, etc.
26 de septiembre de 2001 6.0Doblado, plugins, multi-idioma, etc.
24 de marzo de 2002 6.1 Corrección de errores
1° de junio de 2003 6.2 Soporte de GTK2 y libgnome2, soporte de idioma árabe, comando de escritura, características menores, correcciones de errores
7 de junio de 2004 6.3 Corrección de errores, actualizaciones de traducción, mejoras de marca
15 de octubre de 2005 6.4 Corrección de errores, actualizaciones de Perl, Python y soporte de Ruby
7 de mayo de 2006 7.0Comprobación del espacio, finalización de códigos, páginas de pestañas (imagenes múltiples / diseños de ventana), línea actual y resaltado de columna, ramas de deshacer, y más
12 de mayo de 2007 7.1 correcciones de errores, nuevas sintaxis y archivos de tiempo de ejecución, etc.
9 de agosto de 2008 7.2Soporte de punto flotante en scripts, código de dibujo de pantalla refactorizado, correcciones de errores, nuevos archivos de sintaxis, etc.
15 de agosto de 2010 7.3 Lua support, Python3 support, Blowfish encryption, persistente deshacer/redo
10 de agosto de 2013 7.4 Un nuevo motor de expresión regular más rápido.
12 de septiembre de 2016 8.0 Asynchronous I/O support, jobs, lambdas, etc.
Mayo 18, 2018 8.1 Soporte de ventana terminal y complemento terminal gdb.
Diciembre 13, 2019 8.2 Ventanas de popup, propiedades de texto.
28 de junio de 2022 9.0 Vim9 script

Licencia

Vim se publica bajo la licencia Vim, que incluye algunas cláusulas de programas de caridad que animan a los usuarios que disfrutan del software a considerar donar a niños en Uganda. La licencia de Vim es compatible con la Licencia pública general de GNU a través de una cláusula especial que permite la distribución de copias modificadas bajo la versión 2.0 o posterior de GNU GPL.

Interfaz

gVim 7.3

Al igual que vi, la interfaz de Vim no se basa en menús o iconos, sino en comandos dados en una interfaz de usuario de texto; su modo GUI, gVim, agrega menús y barras de herramientas para los comandos de uso común, pero la funcionalidad completa aún se expresa a través de su modo de línea de comandos. Vi (y por extensión, Vim) tiende a permitir que un mecanógrafo mantenga sus dedos en la fila de inicio, lo que puede ser una ventaja para un mecanógrafo táctil.

Vim tiene un tutorial incorporado para principiantes llamado vimtutor que generalmente se instala junto con Vim, pero es un ejecutable separado y se puede ejecutar con un comando de shell. Los usuarios de Vim' El manual detalla las funciones de Vim y se puede leer desde dentro de Vim o encontrarlo en línea.

Vim también tiene una función de ayuda integrada (utilizando el comando :help) que permite a los usuarios consultar y navegar a través de comandos y funciones.

Modos

Vim tiene 12 modos de edición diferentes, 6 de los cuales son variantes de los 6 modos básicos. Los modos más importantes son:

Personalización

Vim es altamente personalizable y extensible, lo que lo convierte en una herramienta atractiva para los usuarios que exigen una gran cantidad de control y flexibilidad sobre su entorno de edición de texto. La entrada de texto se ve facilitada por una variedad de funciones diseñadas para aumentar la eficiencia del teclado. Los usuarios pueden ejecutar comandos complejos con "asignaciones de teclas," que se puede personalizar y ampliar. La "grabación" La función permite la creación de macros para automatizar secuencias de pulsaciones de teclas y llamar a funciones y asignaciones internas o definidas por el usuario. Las abreviaturas, similares a las macros y las asignaciones de teclas, facilitan la expansión de cadenas cortas de texto en cadenas más largas y también se pueden usar para corregir errores. Vim también cuenta con un "fácil" modo para usuarios que buscan una solución de edición de texto más simple.

Hay muchos complementos disponibles que amplían o agregan nuevas funciones a Vim. Estos complementos generalmente se escriben en el lenguaje de secuencias de comandos interno de Vim, vimscript (también conocido como VimL), pero también se pueden escribir en otros idiomas.

Hay proyectos que combinan secuencias de comandos y personalizaciones complejas y tienen como objetivo convertir a Vim en una herramienta para una tarea específica o agregar un sabor importante a su comportamiento. Los ejemplos incluyen Cream, que hace que Vim se comporte como un editor de hacer clic y escribir, o VimOutliner, que proporciona un esquema cómodo para los usuarios de sistemas similares a Unix.

Características y mejoras sobre vi

Vim tiene un modo de compatibilidad vi, pero cuando ese modo no se usa, Vim tiene muchas mejoras sobre vi. Sin embargo, incluso en el modo de compatibilidad, Vim no es completamente compatible con vi como se define en la especificación única de Unix y POSIX (por ejemplo, Vim no admite el modo abierto de vi, solo el modo visual). Los desarrolladores de Vim afirman que es 'muy compatible con Vi'.

Algunas de las mejoras de Vim incluyen funciones de finalización, comparación y combinación de archivos (conocidos como vimdiff), un sistema de ayuda integrado completo, expresiones regulares extendidas, lenguajes de secuencias de comandos (tanto nativos como a través de intérpretes de secuencias de comandos alternativos como Perl, Python, Ruby, Tcl, etc.), incluida la compatibilidad con complementos, una interfaz gráfica de usuario (gvim), funciones limitadas similares a un entorno de desarrollo integrado, interacción con el mouse (con y sin la GUI), plegado, edición de archivos comprimidos o archivados en formato gzip, bzip2, zip y tar y archivos a través de protocolos de red como SSH, FTP y HTTP, preservación del estado de la sesión, revisión ortográfica, división (horizontal y vertical) y ventanas con pestañas, Unicode y otros soportes multilingües, resaltado de sintaxis, comando transsesión, historiales de búsqueda y posición del cursor, historial de deshacer/rehacer de múltiples niveles y bifurcación que puede persistir en las sesiones de edición y el modo visual.

Mientras se ejecuta, Vim guarda los cambios del usuario en un archivo de intercambio con la extensión ".swp" extensión. Este archivo se puede utilizar para recuperarse después de un bloqueo. Si un usuario intenta abrir un archivo y ya existe un archivo de intercambio, Vim advertirá al usuario y, si el usuario continúa, Vim usará un archivo de intercambio con la extensión ".swo" (o, si ya hay más de un archivo de intercambio, ".swn", ".swm", etc.). Esta función se puede desactivar.

Guión Vim

Vimscript (también llamado Vimscript o VimL) es el lenguaje de secuencias de comandos integrado en Vim. Basado en el lenguaje del editor ex del editor vi original, las primeras versiones de Vim agregaron comandos para controlar el flujo y las definiciones de funciones. Desde la versión 7, el script Vim también admite tipos de datos más avanzados, como listas y diccionarios, y una forma simple de programación orientada a objetos. Las funciones integradas como map() y filter() permiten una forma básica de programación funcional, y el script Vim tiene lambda desde la versión 8.0. El script Vim está escrito principalmente en un estilo de programación imperativo.

Las macros de Vim pueden contener una secuencia de comandos en modo normal, pero también pueden invocar comandos o funciones ex escritas en el script de Vim para tareas más complejas. Casi todas las extensiones (llamadas complementos o más comúnmente secuencias de comandos) de la funcionalidad central de Vim están escritas en secuencias de comandos de Vim, pero los complementos también pueden utilizar otros lenguajes como Perl, Python, Lua, Ruby, Tcl o Racket. Estos complementos se pueden instalar manualmente o mediante un administrador de complementos como Vundle, Pathogen o Vim-Plug.

Los archivos de script de Vim se almacenan como texto sin formato, de manera similar a otro código, y la extensión del nombre de archivo suele ser .vim. Una excepción notable es el archivo de configuración de Vim, .vimrc.

Ejemplos

" Este es el programa Hello World en el script Vim.eco "¡Hola, mundo!"" Esto es un bucle simple en el script Vim.Deja i = 1mientras i . 5eco "la cuenta es" i Deja i += 1terminarUnlet i

Disponibilidad

Mientras que vi originalmente solo estaba disponible en los sistemas operativos Unix, Vim se ha portado a muchos sistemas operativos, incluidos AmigaOS (la plataforma de destino inicial), Atari MiNT, BeOS, DOS, Windows a partir de Windows NT 3.1, OS/2, OS /390, MorphOS, OpenVMS, QNX, RISC OS, Linux, BSD y Classic Mac OS. Además, Vim se envía con Apple macOS.

Los puertos independientes de Vim están disponibles para Android e iOS.

Neovim

Neovim es una bifurcación de Vim que se esfuerza por mejorar la extensibilidad y la mantenibilidad de Vim. Algunas características de la bifurcación incluyen compatibilidad con el protocolo de servidor de idiomas incorporado, compatibilidad con E/S asíncrona y compatibilidad con secuencias de comandos mediante Lua.

Neovim tiene la misma sintaxis de configuración que Vim (a menos que se use vim9script); por lo tanto, se puede usar el mismo archivo de configuración con ambos editores, aunque existen pequeñas diferencias en los detalles de las opciones. Si no se utilizan las funciones adicionales de Neovim, Neovim es compatible con casi todas las funciones de Vim.

El proyecto Neovim se inició en 2014, con algunos miembros de la comunidad de Vim que ofrecieron soporte temprano del esfuerzo de refactorización de alto nivel para proporcionar mejores secuencias de comandos, complementos e integración con GUI modernas. El proyecto es software libre y su código fuente está disponible en GitHub.

Neovim realizó una exitosa recaudación de fondos en marzo de 2014 y apoyó al menos a un desarrollador de tiempo completo. Varias interfaces están en desarrollo, haciendo uso de las capacidades de Neovim.

El editor de Neovim está disponible en un Archivo de paquetes personales de Ubuntu, alojado por Canonical y algunos administradores de paquetes más convencionales, lo que permite instalarlo en una variedad de sistemas operativos.

El 27 de octubre de 2021, GitHub lanzó un complemento GitHub Copilot (una herramienta de inteligencia artificial basada en la nube para autocompletar código) para Neovim como repositorio público.