# Vim

Vim (de l'anglès Vi IMproved) és una versió millorada de l'editor de text vi, present en tots els sistemes UNIX. Braam Moolenaar va presentar la primera versió el 1991, i des d'aleshores ha experimentat moltes millores. La principal característica de Vim i Vi consisteix en el fet que tenen diferents modes entre els que s'alterna per realitzar certes operacions, el que els diferencia de la majoria d'editors que només tenen un mode en el que s'introdueixen les ordres mitjançant combinacions de tecles o interfícies gràfiques.

## Vi IMproved

Vim, com el seu antecessor vi, s'usa des d'un terminal d'ordinador en mode text. Es controla per complet mitjançant el teclat. Això és en part a causa que el Vi va ser desenvolupat a mitjans de la dècada del 1970, quan els terminals es comunicaven amb un ordinador principal (host) mitjançant una connexió sèrie, que no era gaire ràpida. Les limitacions dels terminals de l'època van donar lloc al concepte de diversos modes, idea que ha resultat molt útil des d'aleshores. Vim és gairebé 100% compatible amb vi, tot i que té moltes millores i fins i tot compta amb versions amb interfícies gràfiques i menús que es poden usar mitjançant el ratolí (gvim o kvim), així com una versió simplificada, evim que es comporta com un editor sense diversos modes.
Hi ha versions de Vim per molts sistemes operatius i es pot trobar a gairebé tots els sistemes GNU/Linux, on en moltes ocasions es pot executar a través de l'ordre vi, que crida el Vim a través d'un enllaç simbòlic o un àlies. Quan s'inicia Vim, ho fa en mode comanda, i mostra la ':version' per pantalla.

### Evolució de Vim

Quan Bram Moolenar va comprar un ordinador Amiga a finals de la dècada del 1980, volia seguir usant l'editor d'Unix al que ja s'havia acostumat, però els clons de vi disponibles per Amiga no li agradaven. Així que el 1988 va partir del clon de vi Stevie 1.0 com a base per començar a desenvolupar Vim. En un principi el va anomenar vi IMitation (imitació de vi), perquè en un principi la seva idea era emular les funcionalitats que vi tenia a Unix al seu nou sistema. El 1991 va aparèixer la versió 1.14 a "Fred Fish disk #591", una col·lecció de programari lliure per Amiga. La versió 1.22 va ser la primera que va aparèixer amb versions per Unix i MS-DOS. Per aquells temps l'acrònim que li donava nom ja havia canviat a Vi IMproved.
Els dos anys següents Vim va tenir grans millores. Va fer un pas importants en incorporar finestres a la versió 3.0 (1994). amb vi es poden tenir diversos fitxers oberts en la mateixa sessió, però només se'n pot veure un a la vegada; les finestres de Vim permeten veure'ls simultàniament. Des de la versió 4.0 (1996) hi ha una interfície gràfica disponible que va començar a desenvolupar Robert Webb. Des de la versió 5.0 (1998) Vim té ressaltat de sintaxi.

## Funcionalitats

* Corrector ortogràfic integrat
* Autocompleció de text
* Agrupació de fitxer en pestanyes
* Finestres múltiples, que divideixen l'àrea d'edició horitzontal o verticalment
* Ressaltat de sintaxi independentment del llenguatge de programació o de les etiquetes usades
* Ordres de desfer i refer
* Comprensió de més de 200 sintaxis diferents
* Llenguatge de scripting per programar extensions
* Completat d'ordres, paraules i noms de fitxers
* Compressió i descompressió de fitxers, que possibilita editar fitxers comprimits
* Reconeixement de formats de fitxer i conversió entre els mateixos
* Historial de comandes executades
* Gravació i reproducció de macros
* Guardat de configuració entre sessions
* Plegat automàtic i manual de codi
* Interfície gràfica opcional
* Altament configurable i personalitzable
* Gairebé 100% compatible amb vi, però sense els seus defectes

### Ajuda de Vim

Vim disposa d'una excel·lent documentació, d'acord amb l'eslògan Una característica no documentada és una característica inútil. La documentació, en mode text, és molt àmplia i llegible. L'usuari hi accedeix mitjançant una cerca a la descripció de diverses funcionalitats que poden solucionar el seu problema. A través del ressaltat de la sintaxi pròpia de l'ajuda de Vim es ressalten les paraules clau. Mitjançant combinacions de tecles executades quan el cursor està sobre una paraula es pot navegar per l'ajuda, tornant enrere en cas de necessitat. En la versió gràfica també es pot usar el ratolí per fer això. La comanda :helpgrep és important, ja que permet a l'usuari cercar una paraula als texts d'ajuda, sense que sigui necessari que sigui una paraula clau. Completen l'ajuda en una versió HTML disponible a Internet i una llarga llista de preguntes freqüents (preguntes més freqüents).

### Assistència per programadors

Vim és un editor fet per programadors i per a programadors. Per facilitar la programació, Vim disposa d'un mode "editar, compilar, corregir". De la mateixa forma que els entorns de desenvolupament integrats, per editar el codi font a més pot cridar un compilador extern, i interpretar els resultats. Si hi ha errors de compilació, aquests es mostren en una finestra. Els missatges d'error dirigeixen l'usuari a la zona on s'han trobat per així corregir-los. Aleshores torna a començar el cicle "editar, compilar, corregir" i, si és necessari, corregir nous errors. El treball del programador també es veu facilitat pel ressaltat de sintaxi i la funcionalitat de plegar el codi font veure.

### Comparació de fitxers

Comparar dues versions d'un fitxer és una tasca molt freqüent per alguns usuaris. Vim ofereix una solució simple, les dues versions diferents del fitxer es mostren en dues finestres contigües en les que es ressalten les diferències. D'aquesta manera es poden veure colorejades les diferències intercalades entre les versions. Per exemple, les eliminacions apareixen en vermell i les noves insercions en violeta.

### El llenguatge interpretat de Vim

Vim disposa d'un llenguatge interpretat, o de scripting, per programar noves funcionalitats, mitjançant el qual es poden automatitzar operacions particulars massa complexes per fer amb una macro. Els scripts es poden llegir i interpretar mitjançant el :source.

## Modes

Vim és un editor modal, el que significa que es pot treballar en diferents modes per realitzar una feina determinada. Per veure el mode en què es troba Vim s'ha de tenir activada l'opció showmode. A continuació es descriuen els sis modes de Vim. Els tres primers són els modes del vi original. Els cinc modes addicionals no s'han d'entendre per separat, sinó en combinació amb el mode base. Vegeu també l'ajuda de vim al respecte: ':help vim-modes'.

### Mode comandes

Vim comença amb mode comanda, també conegut com a mode normal. D'aquesta manera es poden usar combinacions de tecles, per, per exemple, copiar línies i treballar en el format del text. Aquest és el mode central, des del que es canvia a altres modes. Si no se sap que s'està fent, prement dues vegades la tecla Esc sempre es pot tornar al mode normal. Si ja s'estava en mode normal i tant la configuració de Vim com la del terminal ho permeten, Vim emet un xiulet.

### Mode inserció

En mode inserció, quan es premen les tecles s'edita el text com en altres editors. Es pot canviar del mode comandes al mode inserció prement la tecla i. Hi ha moltes ordres per passar al mode inserció, que varien substancialment, perquè permeten per exemple editar al final de la línia, en un punt concret del text, editar esborrant una paraula, entre moltes altres. Un usuari expert pot treure un gran profit de l'existència d'aquesta varietat d'ordres.
En mode inserció totes les tecles tenen una altra funció a més d'inserir les lletres, que s'activen prement simultàniament les tecles control o majúscules. La tecla Esc és molt important en mode inserció, ja que permet canviar d'inserció a comandes.

### Mode línies d'ordres

A aquest mode s'accedeix prement la tecla dos punts :. Després es poden introduir comandes complexes, com per exemple cercar i reemplaçar amb expressions regulars. Prement la tecla Esc es pot tornar al mode comandes. Les cerques es poden realitzar amb el comande / (cap endavant) i ? (cap enrere). També es poden filtrar línies mitjançant !.

### Mode visual

Aquest mode és una millora respecte al vi. Mitjançant unes combinacions de tecles en combinació amb les tecles de moviment del cursor, es pot marcar una àrea de text, ja sigui un grup de línies o un bloc. Una vegada es té el text marcat sempre es poden usar comandes del mode comandes per manipular-lo. Les operacions que es poden realitzar amb aquest mode són més simples que les del mode comandes.

### Modo selecció

Aquest mode comença com el mode visual, ja que s'ha de seleccionar un bloc de text. Després de la selecció, es pot canviar al mode selecció mitjançant Control-G. Una vegada en el mode, si es prem una tecla imprimible, el text seleccionat s'esborra, s'acaba el mode selecció i apareix el símbol corresponent a la tecla premuda. La selecció es pot estendre prement majúscules i les tecles de fletxes. el comportament habitual en els programes de Microsoft Windows. Aquest mode es pot finalitzar prement la tecla Esc.

### Mode Ex

Aquest mode s'assembla al mode línia d'ordres, amb la diferència que després de l'execució d'una comanda no es torna al mode comandes. S'hi entra prement Q i s'acaba amb vi. D'aquest mode Vim imita l'editor UNIX ex, que manipulava el text línia a línia degut a les limitacions de l'època, en lloc d'editar tota la pàgina.

## Millores sobre vi

Vim és més útil que el seu antecessor Vi per diverses extensions, per exemple:

### Dígrafs

Útil per fer caràcters del català, si el teclat o la configuració del mateix no ho permeten (hi ha altres maneres d'aconseguir-ho). Pressionant Control-K i després una seqüència de dues tecles d'acord amb el caràcter, p. ex. 'a imprimeix á, n? imprimeix ñ, u: imprimeix ü, !I imprimeix ¡, ?I imprimeix ¿. Es poden veure altres caràcters amb la comanda :digraphs.

### Ressaltat de sintaxi

Permet veure amb quins colors es ressalta la sintaxi d'alguns tipus de fitxers (s'activa amb :syntax enable.)

### Sagnat automàtic

Permet sagnar automàticament diferents tipus de fitxer com XML, C, LaTeX, XSLT. S'activa amb :filetype indent on i es desactiva amb :filetype indent off.

### Fitxers de configuració

Cada usuari pot tenir les seves pròpies configuracions al fitxer ~/.vimrc, que consta de línies amb comandes o comentaris. Els comandes no poden començar amb ':' i els comentaris es col·loquen en línies completes o al final d'una línia que comença amb cometes.

## Llicència

Vim (versió 6.1 i posterior) és programari lliure. Abans el seu autor no tenia gaires diners per desenvolupar però el va contractar Google, i va demanar a la gent que li feia donacions a ell que les fes a una ONG que dona suport a la infància d'Uganda, una regió molt afectada pel sida, ja que ara ja té diners amb el sou que li paga Google.

## Notes

* ↑ ':help quickfix'

## Enllaços externs

* Lloc web de Vim (anglès)
* Manual de Vim (anglès)
* PMF de Vim (anglès)