Vim (editor de texto)

Vim (/vɪm/; 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. 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
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 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
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. 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 entorno 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. 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. Ademais, Vim vén incluído con Apple macOS.
Ports independentes de Vim están dispoñibles para Android e iOS. Neovim
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.