Vim (editor de texto)

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 
Vim script (tamén chamado Vimscript ou VimL) é a linguaxe de scripting incorporada en Vim. Baseada na linguaxe do editor ex do editor vi orixinal, as primeiras versións de Vim engadiron comandos para o fluxo de control e as definicións de funcións. Desde a versión 7, Vim script tamén soporta tipos de datos máis avanzados, como listas e dicionarios, e unha forma sinxela de programación orientada a obxectos. Funcións incorporadas como map() e filter() permiten unha forma básica de programación funcional, e Vim script soporta lambdas dende a versión 8.0. Vim script escríbese principalmente nun estilo imperativo de programación.

As macros de Vim poden conter unha secuencia de comandos en modo normal, pero tamén poden invocar comandos ex ou funcións escritas en Vim script para tarefas máis complexas. Case todas as extensións (chamadas plugins ou, máis comunmente, scripts) da funcionalidade básica de Vim están escritas en Vim script, pero os complementos tamén poden utilizar outras linguaxes como Perl, Python, Lua, Ruby, Tcl, ou Racket. Estes complementos poden ser instalados manualmente ou a través dun xestor de complementos como Vundle, Pathogen ou Vim-Plug.

Os ficheiros de script de Vim almacénanse como texto plano, de xeito semellante a outro código, e a extensión do nome do ficheiro é xeralmente .vim. Unha excepción notable a isto é o ficheiro de configuración de Vim, .vimrc.

 Exemplos 
" Este é o programa Hello World en Vim script.
echo "Ola, mundo!"

" Este é un simple bucle while en Vim script.
let i = 1
while i < 5
  echo "o contador é" i
  let i += 1
endwhile
unlet i

 Dispoñibilidade 
Mentres que vi estaba dispoñible inicialmente só en sistemas operativos Unix, Vim foi portado a moitos sistemas operativos, incluíndo AmigaOS (a 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 e Classic Mac OS.":help sys-file-list" Ademais, Vim vén incluído con Apple macOS.

Ports independentes de Vim están dispoñibles para Android e iOS.

 Neovim 
NeovimsenmarcosenmarcoOutros nomesNVimLanzamento inicial1 de novembro de 2015; fai 9 anos (1 de novembro de 2015)Liberación estable0.11.3 
   / 12 de xullo de 2025; hai 54 días (12 de xullo de 2025)ligazón=https://www.wikidata.org/wiki/Q28975246?uselang=en#P348|senmarco|10x10px|Edit this on WikidataRepositoriohttps://github.com/neovim/neovimligazón=https://www.wikidata.org/wiki/Q28975246?uselang=en#P1324|senmarco|10x10px|Edit this on Wikidata Escrito enC, Vimscript, LuaSistemas operativosMicrosoft Windows e Unix-likeLicenzaLicenza de MITSitio webhttps://neovim.io/ligazón=https://www.wikidata.org/wiki/Q28975246?uselang=en#P856|senmarco|10x10px|Edit this on Wikidata 
Neovim é un fork de Vim que busca mellorar a extensibilidade e a mantibilidade de Vim. Algunhas características do fork inclúen soporte integrado para o Protocolo de Servidor de Linguaxes (LSP), soporte para I/O asíncrona utilizando a biblioteca C libuv, e para scripting en Lua mediante o intérprete de linguaxe luaJIT, permitindo tanto a creación de scripts de complementos como a execución de scripts en modo headlesss/batch. O proxecto é software libre e o seu código fonte está dispoñible en GitHub.

Neovim ten a mesma sintaxe de configuración que Vim antes de vim script 9; así, o mesmo ficheiro de configuración pode ser utilizado con ambos editores, aínda que hai pequenas diferenzas nos detalles das opcións. Se as características engadidas de Neovim non se utilizan, Neovim é compatible con case todas as características de Vim.

O proxecto Neovim comezou en 2014, despois de que un parche para Vim que soportaba a multi-threading fose rexeitado. Neovim tivo unha recadación de fondos exitosa en marzo de 2014, apoiando ó menos a un desenvolvedor a tempo completo.

Varios frontends están en desenvolvemento que aproveitan as capacidades de Neovim.

Co lanzamento da versión 0.5 de Neovim o 2 de xullo de 2021, gañou soporte integrado para o LSP, Tree-sitter e un soporte máis completo para Lua, incluíndo o soporte para scripts de configuración escritos en Lua en vez de VimL.

Desde a versión 0.9, Neovim admite EditorConfig.

 Notas 

 Véxase tamén 

 Ligazóns externas 
 Web oficial
 TechTalk by Bram Moolenaar held on 25th Anniversary of first vim release en YouTube

Categoría:Vi
Categoría:Editores de texto
Categoría:Software libre
Categoría:Software de UNIX