Vim ( ;Vim documentation: intro : "Vim is pronounced as one word, like Jim, not vi-ai-em. It's written with a capital, since it's a name, again like Jim." vi improved, mellorado) é un programa de editor de texto gratuíto e de código aberto, baseado en pantalla. É un clon mellorado de vi de Bill Joy. O autor de Vim, Bram Moolenaar, derivou Vim dun port do editor Stevie para Amiga e lanzou unha versión ó público en 1991. Vim está deseñado para usarse tanto desde unha interface de liña de comandos como unha aplicación independente nunha interface gráfica de usuario. Dende o seu lanzamento para o Amiga, o desenvolvemento multiplataforma fixo que estivese dispoñible en moitos outros sistemas. En 2018, foi votado como o editor máis popular entre os lectores de Linux Journal; en 2015, a enquisa de desenvolvedores de Stack Overflow descubriu que era o terceiro editor de texto máis popular, e en 2019, a quinta contorna de desenvolvemento máis popular.

Historia O antecedente de Vim, Stevie (ST Editor for VI Enthusiasts), foi creado por Tim Thompson para o Atari ST en 1987 e posteriormente desenvolvido por Tony Andrews e G.R. (Fred) Walter. Foi un dos primeiros clones de Vi en popularizarse, e non empregaba o código fonte de Vi. O código fonte de Vi utilizaba o editor de texto Ed desenvolvido baixo AT&T, e por iso Vi só puido ser usado por quen tiña unha licenza de código fonte de AT&T. Basear Vim no código fonte de Stevie significou que o programa podía ser distribuído sen requirir a licenza de código fonte de AT&T.

Baseando o seu traballo en Stevie, Bram Moolenaar empezou a traballar en Vim para o ordenador Amiga en 1988, coa primeira versión pública (Vim v1.14) en 1991.

No momento da súa primeira versión pública, o nome "Vim" era un acrónimo de "Vi IMitation", pero isto cambiou a "Vi IMproved" a finais de 1993.

Historia de versións DataVersiónCambios e adiciónsxuño de 1987Non dispoñibleTim Thompson lanza Stevie (editor ST para entusiastas de VI), un clon limitado de vi para o Atari ST, publicando o código fonte en Usenet.xuño de 1988Non dispoñibleTony Andrews mellora Stevie e transfíreo a Unix e OS/2, lanzando a versión 3.10 en Usenet.19881.0Bram Moolenaar crea Vi IMitation para o Amiga, baseado en Stevie, que nunca foi lanzado publicamente.2 de novembro de 19911.14Primeiro lanzamento público para o Amiga no disco #591 de Fred Fish.19921.22Port a Unix, que nunca foi lanzado publicamente. Vim agora compite con vi.14 de decembro de 19932.0Este é o primeiro lanzamento que utiliza o nome Vi IMproved.12 de agosto de 19943.0Soporte para múltiples xanelas29 de maio de 19964.0Graphical user interface19 de febreiro de 19985.0Resaltado de sintaxe, scripting básico (funcións definidas polo usuario, comandos, etc.).6 de abril de 19985.1Correccións de bugs, diversas melloras.27 de abril de 19985.2Soporte para liñas longas, navegador de arquivos, diálogos, menú emerxente, modo de selección, arquivos de sesión, funcións e comandos definidos polo usuario, interface Tcl, etc.31 de agosto de 19985.3Correccións de bugs, etc.25 de xullo de 19995.4Cifrado básico de arquivos, diversas melloras.19 de setembro de 19995.5Correccións de bugs, diversas melloras.16 de xaneiro de 20005.6Novos arquivos de sintaxe, correccións de bugs, etc.24 de xuño de 20005.7Novos arquivos de sintaxe, correccións de bugs, etc.31 de maio de 20015.8Novos arquivos de sintaxe, correccións de bugs, etc.26 de setembro de 20016.0Plegado, plugins, soporte para múltiples idiomas, etc.24 de marzo de 20026.1Correccións de bugs1 de xuño de 20036.2Soporte para GTK2 e libgnome2, soporte para a lingua árabe, comando :try, características menores, correccións de bugs.7 de xuño de 20046.3Correccións de bugs, actualizacións de traducións, melloras na marcación.15 de outubro de 20056.4Correccións de bugs, actualizacións do soporte para Perl, Python e Ruby.7 de maio de 20067.0Verificación ortográfica, completado de código, páxinas de pestanas (múltiples vistas/disposicións de ventás), resaltado da liña e columna actuais, ramas de desfacer e máis.12 de maio de 20077.1Correccións de bugs, novos arquivos de sintaxe e de execución, etc.9 de agosto de 20087.2Soporte para números de punto flotante en scripts, código de debuxo de pantalla refactorizado, correccións de erros, novos arquivos de sintaxe, etc.15 de agosto de 20107.3Soporte para Lua, soporte para Python3, cifrado Blowfish, desfacer/refacer persistente.10 de agosto de 20137.4Un novo motor de expresións regulares máis rápido.12 de setembro de 20168.0Soporte para I/O asíncrono, traballos, lambdas, etc.18 de maio de 20188.1Soporte para ventás de terminal e plugin de gdb para terminal.13 de decembro de 20198.2Xanelas emerxentes, propiedades de texto.28 de xuño de 20229.0Script Vim9.2 de xaneiro de 20249.1Soporte para clases e obxectos no script Vim9, desprazamento suave, texto virtual.

Licenza Vim publícase baixo a licenza Vim, que inclúe algunhas cláusulas de charityware que animan aos usuarios que gozan do software a considerar doar a nenos en Uganda. A licenza Vim é compatible coa Licenza Pública Xeral de GNU mediante unha cláusula especial que permite a distribución de copias modificadas baixo a GNU GPL versión 2.0 ou posterior.

Interface miniatura|gVim 7.3 Como vi, a interface de Vim non se basea en menús nin en iconas, senón en comandos introducidos nunha interface de texto; o seu modo GUI, gVim, engade menús e barras de ferramentas para comandos de uso común, pero a funcionalidade completa segue expresada a través do seu modo de liña de comandos. Vi (e por extensión Vim) permite que quen escribe ao tacto manteña os dedos na fila de inicio, o que pode ser unha vantaxe para un mecanógrafo táctil.

Vim ten un tutorial integrado para principiantes chamado vimtutor, que normalmente instálase xunto con Vim, pero é un executábel separado e pódese correr cun comando de shell. O Manual de Usuarios de Vim detalla as funcionalidades de Vim e pódese ler desde dentro de Vim ou consultar en liña.Vim help files at vimhelp.org

Vim tamén ten unha función de axuda integrada (usando o comando :help) que permite aos usuarios consultar e navegar a través dos comandos e características.

Rexistros Vim ten varias entradas de memoria especiais chamadas rexistros (non confundir coas rexistros de hardware ou do procesador). Ao cortar, eliminar, copiar ou pegar texto, o usuario pode optar por gardar o texto manipulado nun rexistro. Hai 36 rexistros de propósito xeral asociados a letras e números ([a-z0-9]) e unha serie de rexistros especiais que ou ben conteñen valores especiais (o nome do ficheiro actual, o último comando, etc.) ou teñen un propósito específico.

Modos miniatura|Modos de Vim Como vi, vim admite múltiples modos de edición. Dependendo do modo, os caracteres escritos son interpretados como secuencias de comandos ou son inseridos como texto. En Vim hai 14 modos de edición, 7 modos básicos e 7 variantes:

Modo normal — usado para comandos do editor. Xeralmente é o modo por defecto e, por defecto, premer ESC devolve o editor a este modo. Modo de inserción — usado para escribir texto dun xeito similar á maioría dos editores modernos. Neste modo, o texto aberto nos búferes pódese modificar co texto introducido desde o teclado. Modo visual — usado para seleccionar áreas de texto. Pódense executar comandos sobre a área seleccionada — mover, editar, filtrar mediante comandos internos ou externos, etc. Visual por liñas, un subtipo do modo visual que selecciona unha ou varias liñas enteiras. Visual por bloques, outro subtipo que selecciona un bloque rectangular de texto que abarca unha ou varias liñas. Modo de selección — semellante ao visual, pero os comandos non se interpretan; o texto resaltado substitúese directamente polo que se teclea. Modo de liña de comandos (Cmdline) — proporciona unha única liña de entrada na parte inferior da xanela de Vim. Os comandos (que comezan con :) e algunhas outras teclas para accións específicas (incluíndo a procura por patrón e o comando filter) activan este modo. Ao completar o comando, Vim retorna ao modo previo. Modo Ex — acepta unha secuencia de comandos. Modo Terminal-Job — interacción cun proceso nunha xanela de terminal.

Personalización Vim é altamente configurable e extensible, o que o converte nunha ferramenta atractiva para usuarios que demandan un gran grao de control e flexibilidade no seu contorno de edición de texto. A entrada de texto facilítase mediante diversas características deseñadas para aumentar a eficiencia co teclado. Os usuarios poden executar comandos complexos mediante "key bindings", que poden ser personalizados e ampliados. A función de "recording" permite a creación de macros para automatizar secuencias de pulsacións de teclas e chamar funcións e mapeos internos ou definidos polo usuario. As abreviaturas, semellantes ás macros e aos mapeos de teclas, facilitan a expansión de cadeas curtas de texto en outras máis longas e tamén se poden usar para corrixir erros. Vim tamén inclúe un modo "easy" para usuarios que buscan unha solución de edición de texto máis sinxela.

Existen moitos plugins dispoñibles que amplían ou engaden nova funcionalidade a Vim. Estes complementos son xeralmente escritos na linguaxe de script interna de Vim, vimscript (tamén coñecida como VimL), pero tamén se poden escribir en outras linguaxes.

Hai proxectos que agrupan scripts complexos e personalizacións co obxectivo de converter Vim nunha ferramenta para unha tarefa específica ou de engadir unha funcionalidade importante ó seu comportamento. Exemplos inclúen Cream, que fai que Vim se comporte como un editor de clic e escritura, ou VimOutliner, que proporciona un outliner cómodo para os usuarios de sistemas similares a Unix.

Características e melloras sobre vi Vim ten un modo de compatibilidade con vi, pero cando ese modo non se usa, Vim ten moitas melloras sobre vi.Vim help system (type ":help" within Vim) Con todo, incluso en modo de compatibilidade, Vim non é completamente compatible con vi tal como se define na Single Unix Specification e POSIX (por exemplo, Vim non admite o modo aberto de vi, só o modo visual). Os desenvolvedores de Vim afirman que é "moi compatible con Vi".

Algunhas das melloras de Vim inclúen funcións de completado, comparación e fusión de ficheiros (coñecida como vimdiff), un completo sistema de axuda integrado, expresións regulares estendidas, linguaxes de script (tanto nativas como a través de intérpretes alternativos como Perl, Python, Ruby, Tcl, etc.) incluíndo soporte para complementos (plugins), unha interface gráfica de usuario (gVim), características limitadas semellantes a un contorno de desenvolvemento integrado, interacción co rato (con e sen GUI), plegado de código, edición de ficheiros comprimidos ou arquivados en formatos gzip, bzip2, zip e tar, e de ficheiros a través de protocolos de rede como SSH, FTP e HTTP, preservación do estado da sesión, corrector ortográfico, xanelas divididas (horizontais e verticais) e con pestanas, soporte para Unicode e múltiples idiomas, resaltado de sintaxe, históricos de comandos, buscas e posicións do cursor entre sesións, historial de desfacer/refacer multinivel e ramificado que pode persistir entre sesións de edición, e o modo visual.

Mentres está en execución, Vim garda os cambios do usuario nun ficheiro de intercambio cunha extensión ".swp". Este ficheiro pode ser utilizado para recuperar despois dun fallo. Se un usuario intenta abrir un ficheiro e xa existe un ficheiro de intercambio, Vim advertirá ao usuario, e se o usuario continúa, Vim usará un ficheiro de intercambio coa extensión ".swo" (ou, se xa hai máis dun ficheiro de intercambio, ".swn", ".swm", etc.). Esta función pode ser desactivada.

Vim script