Vim ( / v ɪ m / ; [2] una contracción de Vi mejorado ) es un clon, con adiciones, de Bill Joy 's vi editor de texto de programa para Unix. El autor de Vim, Bram Moolenaar , lo basó en el código fuente de una adaptación del editor Stevie a Amiga [3] y lanzó una versión al público en 1991. Vim está diseñado para su uso tanto desde una interfaz de línea de comandos como como aplicación independiente en una interfaz gráfica de usuario . Vim es un software gratuito y de código abiertoy se publica bajo una licencia que incluye algunas cláusulas de programas benéficos , que alientan a los usuarios que disfrutan del software a considerar la posibilidad de donar a niños en Uganda . [4] La licencia es compatible con la Licencia Pública General GNU a través de una cláusula especial que permite la distribución de copias modificadas "bajo la versión 2 de GNU GPL o cualquier versión posterior". [5]
Autor (es) original (es) | Bram Moolenaar |
---|---|
Versión inicial | 2 de Noviembre de 1991 |
Lanzamiento estable | 8.2.0000 [1] (13 de diciembre de 2019 ) [±] |
Repositorio | |
Escrito en | C , escritura de Vim |
Sistema operativo | Unix , Linux , Windows NT , MS-DOS , macOS , iOS , Android , Haiku , AmigaOS , MorphOS |
Tipo | Editor de texto |
Licencia | Software libre ( licencia Vim ), programas de caridad |
Sitio web | www |
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 ; [6] en 2015, la encuesta de desarrolladores de Stack Overflow encontró que era el tercer editor de texto más popular, [7] y en 2019 el quinto entorno de desarrollo más popular. [8]
Historia
El precursor de Vim, Stevie (Editor ST para VI Enthusiasts) , fue creado por Tim Thompson para Atari ST en 1987 [9] [10] y desarrollado por Tony Andrews [9] [11] y GR (Fred) Walter. [12] [13]
Basando su trabajo 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. [14] [15] [se necesita una mejor fuente ]
En el momento de su primer lanzamiento, el nombre "Vim" era un acrónimo de "Vi IMitation", pero cambió a "'Vi IMproved" a fines de 1993. [16]
Historial de versiones | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Interfaz
Como vi , la interfaz de Vim no se basa en menús o íconos, 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 . [29]
Vim tiene un tutorial incorporado para principiantes llamado vimtutor. Por lo general, se instala junto con Vim, pero existe como un ejecutable separado y se puede ejecutar con un comando de shell. [30] También existe el Manual del usuario de Vim que detalla las características de Vim y una sección de preguntas frecuentes . Este manual se puede leer desde Vim o se puede encontrar en línea. [31] [32]
Vim también tiene una función de ayuda incorporada (usando el :help
comando) 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. [33] Los modos básicos son:
- Modo normal : se utiliza para los comandos del editor. Este también es el modo predeterminado, a menos que
insertmode
se especifique la opción. - Modo visual : similar al modo normal, pero se usa para resaltar áreas de texto. Los comandos normales se pueden ejecutar en el área resaltada, por ejemplo, para mover o editar una selección.
- Seleccionar modo: funciona de manera similar al modo visual. Sin embargo, si se ingresa un carácter imprimible, retorno de carro, salto de línea o salto de línea, Vim inserta el carácter e inicia el modo de inserción. [34]
- Modo de inserción : similar a la edición en la mayoría de los editores modernos. En este modo, los búferes se pueden modificar con el texto insertado.
- Modo de línea de comandos o línea de comandos : admite una entrada de una sola línea en la parte inferior de la ventana de Vim. Los comandos normales (que comienzan con
:
) y algunas otras teclas para acciones específicas (incluida la búsqueda de patrones y el comando de filtro) activan este modo. Al completar el comando, Vim regresa al modo anterior. - Modo Ex : de manera similar al modo Cmdline, solicita la entrada de comandos en la parte inferior de la ventana. Al finalizar el comando, Vim solicita otro comando de modo Ex.
Personalización
Vim es altamente personalizable y extensible, lo que la 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. [35] 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 pueden personalizar y ampliar. La función de "grabación" permite la creación de macros para automatizar secuencias de pulsaciones de teclas y llamar 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 de texto cortas en cadenas más largas y también se pueden utilizar para corregir errores. Vim también presenta un modo "fácil" para los usuarios que buscan una solución de edición de texto más simple. [36]
Hay muchos complementos disponibles que extienden o agregan nuevas funcionalidades a Vim, como linters , integración con Git , mostrando colores en CSS . Estos scripts complejos generalmente se escriben en el lenguaje de scripting interno de Vim, vimscript (también conocido como VimL), [37] pero también se pueden escribir en otros lenguajes.
Hay proyectos que combinan scripts complejos y personalizaciones y tienen como objetivo convertir 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.
Funciones y mejoras sobre vi
Vim tiene un modo de compatibilidad con vi, pero cuando ese modo no se usa, Vim tiene muchas mejoras sobre vi. [38] Sin embargo, incluso en modo de compatibilidad, Vim no es totalmente compatible con vi como se define en la Especificación Única de Unix [39] 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". [40]
Algunas de las mejoras de Vim incluyen la finalización , comparación y fusión de archivos (conocido como vimdiff), un completo sistema de ayuda integrado, expresiones regulares extendidas , lenguajes de scripting (tanto nativos como a través de intérpretes de scripting alternativos como Perl, Python, Ruby, Tcl, etc. ) que incluye soporte para complementos , una interfaz gráfica de usuario (conocida como gvim), características limitadas de entorno de desarrollo integrado , interacción del mouse (con y sin la GUI), plegado , edición de archivos comprimidos o archivados en gzip , bzip2 , zip , y formato 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 en varios idiomas, resaltado de sintaxis , comando de transsesión, historial de búsqueda y posición del cursor , historial de deshacer / rehacer de múltiples niveles y ramificaciones que puede persistir en las sesiones de edición y en el modo visual.
Mientras se ejecuta, Vim guarda los cambios del usuario en un archivo de intercambio con la extensión ".swp" . El archivo de intercambio 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 utilizará un archivo de intercambio con la extensión ".swo" (o, si ya hay más de uno archivo de intercambio, ".swn", ".swm", etc.). [41] [42] Esta función se puede desactivar. [43]
Secuencia de comandos de Vim
El script Vim (también llamado Vimscript o VimL ) [44] es el lenguaje de script integrado en Vim. [45] Basado en el lenguaje ex editor del editor vi original , las primeras versiones de Vim agregaron comandos para el flujo de control 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 de 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 ex o funciones escritas en el script de Vim para tareas más complejas. Casi todas las extensiones (llamadas complementos o, más comúnmente, scripts) de la funcionalidad principal de Vim están escritas en el script de Vim, pero los complementos también pueden utilizar otros lenguajes como Perl , [46] Python , [47] Lua , [48] Ruby , [49] Tcl , [50] o Raqueta . [51] 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 otros códigos, y la extensión del nombre de archivo suele ser .vim
. Una notable excepción a esto es el archivo de configuración de Vim, .vimrc
.
Ejemplos de
"Este es el programa Hello World en el script de Vim.
Echo " ¡Hola, mundo! ""Este es un ciclo while simple en el script de Vim. Let i = 1 while i < 5 echo " count is " i let i + = 1 end
while unlet i
Disponibilidad
Mientras que vi estaba disponible originalmente solo en 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 Mac OS clásico . [52] Además, Vim se envía con cada copia de Apple macOS . [53]
Los puertos independientes de Vim están disponibles para Android [54] [55] e iOS . [56]
Neovim
Captura de pantalla | |
Otros nombres | NVim |
---|---|
Versión inicial | 1 de noviembre de 2015 | [57]
Lanzamiento estable | 0.4.4 [57] / 7 de julio de 2020 [57] |
Repositorio | https://github.com/neovim/neovim |
Escrito en | C , escritura de Vim , Lua |
Sistema operativo | Microsoft Windows y tipo Unix |
Licencia | Licencia Apache 2.0 |
Sitio web | https://neovim.io |
Neovim [58] es una bifurcación - con adiciones [59] - de Vim que se esfuerza por mejorar la extensibilidad y mantenibilidad de Vim. [60] Neovim tiene la misma sintaxis de configuración que Vim; 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. [61] Si no se utilizan las funciones adicionales de Neovim, Neovim es compatible con casi todas las funciones de Vim. [62]
El proyecto Neovim se inició en 2014, y algunos miembros de la comunidad de Vim ofrecieron un soporte temprano del esfuerzo de refactorización de alto nivel para proporcionar mejores secuencias de comandos, complementos e integración con las GUI modernas . [63] [64] El proyecto es software libre y su código fuente está disponible en GitHub . [sesenta y cinco]
Neovim tuvo una recaudación de fondos exitosa en marzo de 2014, [66] apoyando al menos a un desarrollador de tiempo completo. Se están desarrollando varias interfaces, haciendo uso de las capacidades de Neovim. [67] [68] [69]
El editor Neovim está disponible en un archivo de paquetes personal , [70] alojado por Ubuntu y algunos administradores de paquetes más convencionales, [71] lo que hace posible instalarlo en una variedad de sistemas operativos.
Ver también
- Aprendiendo los editores vi y Vim , un libro tutorial para vi y vim, publicado por O'Reilly Media
- Guerra de editores: la rivalidad entre los usuarios de los editores de texto de Emacs y vi (Vim)
- Lista de editores de texto
- Comparación de editores de texto
- Vimperator
- Pentadáctilo
Referencias
- ^ "Lanzamientos" . Consultado el 13 de diciembre de 2019 , a través de GitHub .
- ^ Documentación de Vim: intro : "Vim se pronuncia como una palabra, como Jim, no vi-ai-em. Está escrito con mayúscula, ya que es un nombre, nuevamente como Jim".
- ^ Zapletal, Lukáš (18 de abril de 2005), "Entrevista: Bram Moolenaar" , LinuxEXPRES : 21-22 , consultado el 5 de febrero de 2015 ,
¿VIM es un derivado de otro clon de VI o comenzó desde cero? Empecé con Stevie. Este fue un clon de Vi para la computadora Atari ST, portado al Amiga. Tenía bastantes problemas y no podía hacer todo lo que Vi podía, pero como el código fuente estaba disponible, podía solucionarlo yo mismo. ( Traducción al inglés )
- ^ "Documentación de Vim: Uganda" . vimhelp.org .
- ^ "Documentación de Vim: Uganda" .
- ^ "Linux Journal: premios de elección de los lectores de 2003" . 1 de noviembre de 2003 . Consultado el 24 de mayo de 2006 .; "Linux Journal: premios de elección de los lectores de 2004" . 1 de noviembre de 2004 . Consultado el 24 de mayo de 2006 .; "Linux Journal: premios de elección de lectores 2005" . 28 de septiembre de 2005 . Consultado el 24 de mayo de 2006 .
- ^ "Stack Overflow Developer Survey 2015 § IV. Editor de texto" . Desbordamiento de pila . Consultado el 25 de julio de 2016 .
- ^ "Resultados de la encuesta de desarrolladores de Stack Overflow 2019" . Desbordamiento de pila § VII. Entornos de desarrollo . Consultado el 20 de julio de 2019 .
- ^ a b c d Thompson, Tim (26 de marzo de 2000). "Stevie" . Consultado el 27 de diciembre de 2010 .
- ^ a b Tim Thompson (28 de junio de 1987). "Un mini-vi para el ST" . Grupo de noticias : comp.sys.atari.st . Usenet: [email protected] . Consultado el 27 de diciembre de 2010 .
- ^ a b Tony Andrews (6 de junio de 1988). "v15i037: Stevie, un clon de VI" aspirante "para Unix, OS / 2, Amiga" . Grupo de noticias : comp.sources.unix . Usenet: [email protected] . Consultado el 27 de diciembre de 2010 .
- ^ Vim (20 de enero de 2015). "intro.txt" . Ayuda Vim . Empuje. Archivado desde el original el 9 de julio de 2016 . Consultado el 9 de julio de 2016 .
- ^ "vim (1)" . die.net . Empuje. 11 de abril de 2006. Archivado desde el original el 9 de julio de 2016 . Consultado el 9 de julio de 2016 .
Vim está basado en Stevie, trabajado por: Tim Thompson, Tony Andrews y GR (Fred) Walter. Aunque casi no queda nada del código original.
- ^ "La historia continua de Vim" (PDF) .
- ^ "La historia de Vim - Jovica Ilic" . Consultado el 25 de enero de 2020 .
- ^ a b c "VILE (Vi Like Emacs) - Preguntas más frecuentes (FAQ)" . Consultado el 7 de septiembre de 2019 .
- ^ a b c d e f Moolenaar, Bram (15 de enero de 2002). "Vim, un editor de texto de código abierto" . Consultado el 24 de octubre de 2005 .
- ^ "Textfiles.com" .
- ^ "Filewatcher" . Archivado desde el original el 11 de julio de 2011 . Consultado el 26 de febrero de 2011 .
- ^ "Manual oficial de Vim, resumen de la versión 4" . 12 de marzo de 2004 . Consultado el 6 de agosto de 2008 .
- ^ "Manual oficial de Vim, resumen de la versión 5" . 17 de enero de 2004 . Consultado el 6 de agosto de 2008 .
- ^ "Manual oficial de Vim, resumen de la versión 6" . 12 de marzo de 2004 . Consultado el 6 de agosto de 2008 .
- ^ "Manual de referencia de Vim, versión 7" . 17 de julio de 2016 . Consultado el 13 de enero de 2019 .
- ^ "Grupos de Google" . groups.google.com .
- ^ Google Discussiegroepen . Groups.google.com. Consultado el 9 de diciembre de 2013.
- ^ Bram Moolenaar. "¡Vim 8.0 lanzado!" . Consultado el 12 de septiembre de 2016 .
- ^ Bram Moolenaar. "¡Lanzamiento de Vim 8.1!" . Consultado el 18 de mayo de 2018 .
- ^ Bram Moolenaar. "¡Lanzamiento de Vim 8.2!" . Consultado el 13 de diciembre de 2019 .
- ^ Cordero, Linda; Robbins, Arnold (1998). Aprendiendo el editor Vi . O'Reilly Media, Inc. pág. 305 . ISBN 9781565924260.
- ^ Moolenaar, Bram (3 de noviembre de 2010). "Documentación de Vim: usr_01" . Consultado el 28 de agosto de 2019 .
- ^ Archivos de ayuda de Vim en vimhelp.org
- ^ Oualline, Steve (abril de 2001). Vi mejorado (VIM) (PDF) . Nuevos editores de Riders. ISBN 0-7357-1001-5.
- ^ Moolenaar, Bram (8 de diciembre de 2010). "Documentación de Vim: intro" . vimdoc.sourceforge.net . Consultado el 28 de agosto de 2019 .
- ^ Moolenaar, Bram (17 de febrero de 2010). "Documentación de Vim: visual" . vimdoc.sourceforge.net . Consultado el 28 de agosto de 2019 .
- ^ Meléndez, Steven. "Por qué Vim, un editor de texto de los años 80, sigue siendo la interfaz de usuario elegida por los usuarios avanzados" . FastCompany . Consultado el 5 de mayo de 2019 .
- ^ "Consejos: facilitando Vim" . Linux.com . 10 de abril de 2007 . Consultado el 6 de mayo de 2019 .
- ^ "Documentación de Vim: usr_41" . vimhelp.org .
- ^ Sistema de ayuda de Vim (escriba "
:help
" dentro de Vim) - ^ The Open Group (2008), "vi - editor de visualización orientado a pantalla (visual)", Especificación Unix única, versión 4 (IEEE Std 1003.1-2008) , consultado el 27 de diciembre de 2010
- ^ Peppe; Benji; Campbell, Charles (2 de enero de 2004). "Preguntas frecuentes de Vim" . Consultado el 27 de diciembre de 2010 . (pregunta 1.3)
- ^ "Documentación de Vim: recuperar" . vimdoc.sourceforge.net . Consultado el 17 de diciembre de 2020 .
- ^ "Cómo manejar archivos de intercambio en Vim" . cs.longwood.edu . Consultado el 17 de diciembre de 2020 .
- ^ " Opción ' swapfile'" . vimhelp.org . 10 de octubre de 2020 . Consultado el 18 de diciembre de 2020 .
- ^ Klein, Benjamin. "El manual de VimL: edite como un profesional con complementos y scripts de Vim por Benjamin Klein | The Pragmatic Bookshelf" . Archivado desde el original el 25 de enero de 2020 . Consultado el 25 de enero de 2020 .
- ^ "Documentación de Vim: usr_41" . vimhelp.org .
- ^ Verdoolaege, Sven; Gerassimof, Matt. "Documentación de Vim: if_perl" . Consultado el 27 de agosto de 2019 .
- ^ Moore, Paul. "Documentación de Vim: if_pyth" . Consultado el 27 de agosto de 2019 .
- ^ Carvalho, Luis. "Documentación de Vim: if_lua" . Consultado el 27 de agosto de 2019 .
- ^ Maeda, Shugo. "Documentación de Vim: if_ruby" . Consultado el 27 de agosto de 2019 .
- ^ Wilken, Ingo. "Documentación de Vim: if_tcl" . Consultado el 27 de agosto de 2019 .
- ^ Khorev, Sergey. "Documentación de Vim: if_mzsch" . Consultado el 27 de agosto de 2019 .
- ^ "
:help sys-file-list
"
"Vim Online: Descargas" . Consultado el 7 de enero de 2007 . - ^ "Página del manual de Mac OS X para vim (1)" . developer.apple.com . Apple . Consultado el 12 de enero de 2010 .
- ^ "VimTouch, el desarrollo se ha estancado en esta aplicación" . Consultado el 9 de agosto de 2015 .
- ^ "DroidVim, en desarrollo activo" . Consultado el 5 de marzo de 2017 .
- ^ "Vim - Applidium, agencia móvil en París" . Archivado desde el original el 20 de enero de 2012 . Consultado el 11 de agosto de 2015 .
- ^ a b c "Libera • neovim / neovim" . GitHub . Consultado el 30 de abril de 2021 .
- ^ "Neovim: vim, fuera de la caja" .
- ^ "Documentación de Nvim: vim_diff" .
- ^ "Visión de Neovim" .
- ^ "Cambiar a NeoVim" .
- ^ "Cómo empezar a usar Neovim en lugar de Vim" .
- ^ "Neovim: reconstrucción de Vim para el siglo XXI" .
- ^ "Entrada de blog de Vimcasts.org" .
- ^ "GitHub - neovim / neovim: Vim-fork centrado en extensibilidad y usabilidad" . 29 de agosto de 2019.
- ^ "Neovim" . Bountysource . 23 de marzo de 2014 . Consultado el 20 de marzo de 2021 .
- ^ "Interfaz de NyaoVim" . 29 de agosto de 2019.
- ^ "Interfaz de Mac OS X" . 29 de agosto de 2019.
- ^ "Interfaz de Neovim-Qt" . 21 de julio de 2020.
- ^ "Información de Neovim PPA" .
- ^ "Wiki de Neovim: instrucciones de instalación" . 29 de agosto de 2019.
enlaces externos
- Página web oficial
- TechTalk de Bram Moolenaar celebrado en el 25 aniversario del primer lanzamiento de vim en YouTube