12/12/2004

Primers passos amb el vi

Escrit per adriA

Després de la presentació del vi que vaig fer al darrer post, avui entraré una mica més en materia. Aquest post l’escric per a la gent nova al unix que vingui a petar a aquest weblog. En els propers posts intentaré ser més fidel a l’objectiu d’aquest weblog, i els posts els escriuré més per a mi , perquè em serveixi de repositori de tècniques que estic fent servir ara però que si deixo d’utilitzar durant mesos pot ser que se m’oblidin. Anem per feina.

Un editor modal

El vi és un editor modal. Una paraulota que només indica que l’editor interpreta de manera diferent les tecles premudes depenent del mode d’edició en què es treballa. Bàsicament el vi té 2 modes diferents. En el mode inserir (el mode d’entrada de text) el fem servir precisament per això, per escriure text. En mode comana (o mode línia - line mode), en canvi, podem fer cerques, eliminar text, copiar i enganxar, moure’ns rapidament pel text, etc. L’avantatge de tenir 2 modes diferenciats per les comanes i per escriure és la facilitat i rapidesa amb que es poden entrar moltes comanes una darrera l’altra. D’aquesta manera podem fer tasques repetitives, que trenquen el flux normal d’escriptura i pensament, d’una manera rapidíssima.

Escriure

El millor que es pot fer quan es llegeix documentació sobre programes informàtics i, més encara si volem aprendre a fer anar un editor de textos, és tenir-los a punt per experimentar mentre llegim. La manera més senzilla d’invocar el vi és des d’un shell amb

$ vi nomfitxer

o millor encara,

$ vim nomfitxer

Si no indiquem el contrari amb opcions passades en invocar el vi, l’editor comença en mode comana. Per començar a escriure premem la tecla “i". Així passem al mode d’inserció de text i podem començar a escriure just davant del caràcter on tenim el cursor. En la majoria de varietats de vi, incloent-hi el vim, quan es treball en mode inserir veureu que a la cantonada esquerra del terminal hi diu “– INSERT –". Sempre que volguem tornar al mode comana farem servir la tecla ESC (la tecla que es troba a la cantonada esquerra superior del teclat). Per deixar el mode comana i començar a escriure ho podem fer utilitzant diverses comanes que mouen el cursor a posicions diferents del text abans de passar a mode inserir. Així, si volem afegir una línia damunt de la línia on tenim el cursor, farem servir la comana “O” (o majúsucla), mentre que per escriure una línia a sota podem premer “o” (o minúscula). A més a més de la comana “i” (inserir), també podem fer servir la comana “a", per començar a escriure darrera del caràcter on tenim el cursor col·locat.

Canviar el cursor de posició

En mode comana ens podem moure pel text caràcter a caràcter, o línia a línia, fent servir “h” (esquerra), “j” (avall), “k” (amunt) i “l” (dreta). També podem fer servir les fletxes de moviment que inclouen la majoria de teclats moderns per moure’ns pel text, tant si treballem en mode comana o mode inserir. Per moure’ns pel text saltant de paraula en paraula podem fer servir la comana “w” (per avançar) o “b” (per saltar a la paraula anterior). Les comanes “Ctrl-U” i “Ctrl-D” ens mouran mitja pantalla amunt i avall respectivament. En vi podem saltar a una línia concreta del text donant el seu número després del caràcter “:” (així, per saltar des de qualsevol punt del text a la línia 80 fariem servir la comana “:80″). Per ajudar-vos a fer salts d’aquesta manera podeu fer que l’editor us ensenyi el número de cada línia amb la comana “:set num".

Esborrar i moure text

El vim té moltíssimes comanes que ens faciliten moure de posició i esborrar fragments del text. Per eliminar el caràcter sobre el que es troba el cursor tenim la comana “x". Per esborrar una línia sencera farem servir “dd". Les comanes “d$” i “d^” eliminen tots els caràcters que es troben entre la posició actual del cursor i el principi ("d$") i el final de la línia ("d^"). El text eliminat es guarda en un registre per defecte (l’equivalent al porta-papers del windows) i es pot enganxar en una altre punt del text amb les comanes “p” o “P", segons si volem enganxar el text davant o darrera del caràcter on es troba el cursor. Per copiar una línia al registre per defecte, però sense esborrar-la, tenim la comana “yy".

Per a moltes comanes que realitzen un acció sobre el text (eliminar un caràcter, moure el cursor una paraula cap endarrera, etc), podem entrar un nombre immediatament abans de la comana per indicar quantes vegades volem que es repeteixi l’acció. Així, per exemple, si volem avançar el cursor 4 paraules de cop farem servir “4w” i si volem eliminar 5 caràcters entrarem la comana “5x".

Cerques

En mode comana, per cercar paraules, o seqüències de caràcters, entrem la paraula després de “?” (per cercar des de la posició actual del cursor cap al principi del text) o “/"(quan volem cercar cap al final). Per fer cerques i substitucions sobre les paraules trobades es fa servir la comana “s", que tractarem un altre dia en un post dedicat únicament a substitucions i expressions regulars.

Gravar els canvis i sortir

Ens seriviria de poc tenir un editor si no poguéssim desar els canvis introduits en un text. Per gravar la feina feta podem fer servir “:w” (write). Si volem gravar i sortir del vi teclejarem “:wq” (write i després surt quit). Si, en canvi, volem sortir del vi sense gravar les modificacions introduïdes ho indicarem amb “:q!".

Passets seguits de gambades

Tot i que només he passat el rasclet timídament sobre la superfície del potencial del vi, les comanes que he presentat poden fer una mica més planeres les primeres hores de treball amb vi. Encara que ara al principi potser us sembla que editar textos amb vi és com caminar amb crosses, d’aqui a 4 dies, quan tingueu ben apreses aquestes i una dotzena més de comanes, ja veureu que el vi us ajudarà a fer gambades de mig quilometre, i no entendreu com havieu pogut viure fins ara només amb el notepad de windows ;-)

Intentaré acabar els posts amb uns petits resums que combinaré cada cert temps en una “xuleta” actualitzada que aniré republicant al weblog amb una certa freqüencia. Aquí sota hi ha la primera versió.

Resum

Comana Funció
i, a, o, O Entra al mode inserir per escriure text
ESC Passa de mode inserir a mode comana
h, j, k, l Moviments de la posició del cursor caràcter a caràcter
w, b, g, e, ge Moviments de la posició del cursor paraula a paraula
:Ctrl-U, :Ctrl-D
yy Copia la línia al registre per defecte
p, P Enganxa el contingut del registre per defecte
dd Elimina linies senceres (guardant una còpia al registre per defecte)
x Elimina el caràcter
:set nu Mostra número de línia
:w Escriu el text al fitxer
:q Surt del vim
:q! Surt del vim descartant els canvis
/paraula, ?paraula Cerca d’una paraula o seqüència de caràcters en el text. Prement “n” es salta a la següent aparició de la darrera paraula cercada

PD> De moment, no tinc temps de fer un disseny decent per aquest weblog i temporalment he eliminat els comentaris.