El Blog de Trespams

Blog personal sobre tecnologia, gestió de projectes i coses que se me passen pel cap

Productivitat Vim

Hi ha una sèrie d'accions que faig normalment amb el Vim i que em resulten molt útils en el dia a dia i que vull compartir amb vosaltres per si també us va bé.

No és una guia de Vim, ni un tutorial, que n'hi ha molts per Vim, però si programau segurament us seran útils.

Plugins

Plugins n'hi ha molts i variats, però el millor recull de Plugins per a programar i més si feis servir Python habitualment és el recull que ha fet Joe Di Castro:

https://github.com/joedicastro/dotfiles

En Joe ha fet un recull de plugins útils, els ha documentat i els ha integrat de manera que siguin fàcils de fer anar.

Productivitat

Escriure codi sovint és una feina repetitiva, tot el que ens permeti escriure o moure'ns més ràpid és benvingut. Vim en aquest aspecte és el millor en diferència: molts de buffers d'edició i facilitat per canviar-hi, registres on enmmagatzemar el que anam copiant, tecles ràpides de moviment, ... Tot això ho trobareu ben explicadet a qualsevol tutorial, però m'agradaria fer cinc cèntims de les meves utilitats preferides:

UltiSnips

Els darrers dies he estat provant un IDE anomenat PyCharm. Pels que us agrada més l'entorn gràfic que la consola és un molt bon entorn, però per mi té un petit gran defecte si ho comparam amb Vim: les eines de generació de codi són molt magres comparades amb UltiSnips un dels plugins que trobareu al recull de Joe Di Castro o que podeu instal·lar de manera independent.

UltiSnips ens proporciona un petit llenguatge orientat a la creació de plantilles de codi (un DSL en podem dir), que ens permet crear plantilles potents i a més s'integra de tal maenera que pots cridar plantilles dins una plantilla, tenir valors per defecte,

Per exemple:

snippet sb "Template for a new simple script" !b #!/usr/bin/env python # -*- coding: utf8 -*- """ ${1} @author: Antoni Aloy @email : aaloy@apsl.net """ endsnippet

amb això, teclejant sb i pitjant tab podrem posar el she-bang al nostre codi python i deixar-ho tot a punt per documentar.

snippet email "email field" b ${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True}) endsnippet

aquest snippet ens permet crear un camp EmailField, fixau-vos com es defineixen tant els posicionadors pel nom com els valors per defecte.

Amb <c-j> anam al següent camp amb <c-k> anirem a l'anterior, amb la qual cosa podem modificar el que anam fent, cosa que en la majoria de llenguatges de plantilla per a la creació de codi no es contempla i és molt útil.

Marcatge d'arxius

Una de les coses que més útils estic trobant darrerament és la possibilitat de marcar un arxiu amb una sintaxi concreta. Això és especialment útil afegit amb el plugin anterior, ja que ens permet macar un arxiu Python per a que a més agafi les plantilles i resaltat de sintaxi per Django. Per això basta posar un comentari del tipus

# vim:ft=python.django:

i òbviament ja tenc creat un snippet per a que ho faci per mi :)

Evitar ESC

La tecla ESC està molt enfora el teclat i obliga a moure massa els dits i és una de les que més fem servir en Vim per canviar de mode. Així que una opció és remapejar-la de manera que sigui més fàcil i ràpid accedir a aquest funció.

Una de les opcions que es recomananen és substituir ESC per la pulsació ràpida de dues lletres la jj per exemple funciona molt bé.

imap jj <Esc>

Anar amunt i avall

Quan programam és habitual desplaçar-nos d'un punt a un altra d'un arxiu o fins i tot a altres arxius. Vim recorda aquests moviments i ens permet tornar ràpidament a la posició prèvia amb Ctrl-O i una vegada allà i feta la feina tornar allà on érem amb Ctrl-I.

Podem veure el marcadors que tenim definits i l'ordre de les posicions fent

:jumps

Ctrl-O ens mourà en cap el marcador previ i Ctrl-I ens mourà al següent. També ens podem moure cap a un marcador concret si abans de fer la pulsació concreta de moviment indicant l'identificador del salt.

Per exemple podem teclejar gg a un arxiu Python per situar-nos a la capçalera i afegir un mòdul a importar. Per a desplçar-nos allà on érem bastarà pitjar Ctrl-O una o més vegades fins a situar-nos al punt d'edició previ.

blog comments powered by Disqus