Referència ràpida de vim

Un dels editors de text més extesos en el món de Linux/Mac és el vi (i la seva versió millorada vim). El podreu trobar instal·lat amb la versió senzilla en qualsevol sistema Unix/Linux/Mac instal·lat per defecte.

El mac OSx ja porta per defecte instal·lat el vim, per instal·lar la versió millorada amb linux:

apt-get install vim

Fer servir el vim com a editor de text per linux és tan gratificant com frustrant ja que pot fer infinitat de funcions molt pràctiques però també que són difícils de recordar, sempre va bé tenir el receptari amb totes les dreceres a mà:

REFERÈNCIA RÀPIDA DE VIM

Moviments bàsics
h l k j caràcter esquerra, dreta; línia amunt, avall
b w paraula esquerra, dreta
ge e final de paraula esquerra, dreta
{  } començament del paràgraf anterior, següent
( ) començament de frase anterior, següent
0 gm començament, mig de la línia
^  $ primer, últim caracter de la línia
nngg línia n (per defecte la última), primera
n% percentatge n del fitxer (n és obligatori)
n| columna n de la línia actual
% parèntesi, claudàtor, clau, corresponent, #define
nnL línia n des del principi, final de la finestra
M línia central de la finestra
Inserció & remplaçament
i a inserta abans, després del cursor
I A inserta al començament, final de la línia
gI inserta text a la primera columna
o O obre una línia nova sota, sobre l’actual
rc remplaça per c el caràcter sota el cursor
grc com r, però sense afectar el format
R remplaça caràcters començant al cursor
gR com R, però sense afectar el format
cm canvia el text del moviment m
cc or S canvia la línia actual
C canvia fins al final de la línia
s canvia un caràcter i inserta
~ canvia majúscules/minúscules
g~m canvia maj./min. del moviment m
gum gUm canvia maj./min. el text del moviement m
<m >m sagna esquerra, dreta el text de m
n<< n>> sagna n línies cap a l’esquerra, dreta
Supressió
x X suprimeix el caràcter sota, abans del cursor
dm suprimeix el text del moviment m
dd D suprimeix la línia actual, fins al final
J gJ ajunta la línia acutal i la següent, sense espai
:rd suprimeix r línies
:rdx suprimeix r línies i posa-les al registre x
Mode d’inserció
^Vc ^Vn insereix caràcter literal c, de valor ASCII n
^A insereix el mateix text un altre cop
^@ igual que ^A, i torna a mode normal
^Rx ^R^Rx insereix el contingut de x, literalment
^N ^P completa el text mirant endavant, enrere
^W suprimeix la paraula sota el cursor
^U suprimeix el text inserit a la línia acutal
^D ^T sagna a l’esquerra, a la dreta
^Kc1c2 or c1c2 introdueix el dígraf \c1,c2\
^Oc executa c en un mode normal temporal
^X^E ^X^Y desplaça amunt, avall
<esc> or ^[ abandona l’inserció i torna a mode normal
Còpia
"x empra el registre x en l’operació següent
:reg mostra el contingut de tots els registres
:reg x mostra el contingut del registre x
ym copia el text del moviment m
yy or Y copia la línia actual
p P enganxa abans, després del cursor
]p [p com pP amb el sagnat correcte
gp gP com pP deixant el cursor al final
Inserció avançada
g?m codifica en rot13 el text del moviment m
n^A n^X +n-n al nombre sota el cursor
gqm justifica les línies del moviment m
:rce w centra les línies del rang r, amplada w
:rle i alinea a l’esq. les línies de r, indentació i
:rri w alinea a la dreta les línies de r, amplada w
!mc filtra les línes de m per l’ordre c
n!!c filtra n línies per l’ordre c
:r!c filtra el rang r per l’ordre c
Mode visual
v V ^V selecciona caràcters, línies, bloc
o mou el cursor al principi de la selecció
gv repeteix la selecció anterior
aw as ap selecciona paraula, frase, paràgraf
ab aB selecciona un bloc ( ), un bloc { }
Desfer, repetició & registres
u U desfés l’última acció, restaura la línia
.  ^R repeteix l’acció, refés l’acció desfeta
n repeteix l’acció amb el nombre n
qc qC enregistra, afegeix caràcters al registre c
q atura l’enregistratge
@c executa el contingut del registre c
@@ repeteix l’última acció @
:@c executa el registre c en mode Ex
:rg/p/c executa l’ordre Ex c al rang r
  allà on p concorda
Moviments avançats
- + línia amunt, avall fins el primer caràcter no-blanc
B W paraula esquerra, dreta
gE E final de paraula esquerra, dreta
n_ avall n-1 línies fins el primer caràcter no-blanc
g0 començament de la línia en la pantalla
g^  g$ primer, últim caràcter de la línia en la pantalla
gk gj línia de pantalla amunt, avall
fc Fc següent, anterior occurència del caràcter c
tc Tc abans de la següent, anterior occurrència de c
; , repeteix l’últim fFtT, cap a l’altre cantó
[[ ]] començament de la secció enrere, endavant
[] ][ final de secció enrere, endavant
[( ]) (, ) enrere, endavant
[{  ]} {} enrere, endavant
[m ]m mètode Java enrere, endavant
[# ]# #if#else#endif enrere, endavant
[* ]* començament, final de /* */ enrere, endavant
Cerca & substitució
/s  ?s cerca s endavant, enrere
/s/o  ?s?o cerca s amb desplaçament o
n or / repeteix última cerca cap endavant
N or ? repeteix última cerca cap enrere
# * cerca enrere, endavant la paraula sota el cursor
g# g* el mateix, però troba concordances parcials
gd gD definició local, global del símbol sota el cursor
:rs/f/t/x substiteix f per t al rang r
  x: g-totes les ocurrences, c-demana confirmació
:rx repeteix substitució amb nous r & x
Caràcters especials a la cerca
.   ^  $ qualsevol caràcter, principi, final de línia
\< \> principi, final de paraula
[c1-c2] un caràcter al rang c1..c2
[^c1-c2] un caràcter fora del rang
\i \k \I \K identificador, paraula clau; sense dígits
\f \p \F \P nom de fitxer, car. imprimible; s.d.
\s \S espai blanc, espai no-blanc
\e \t \r \b <esc><tab><><>
\= * \+ concorda 0..10..1.. àtoms precedents
\| separa dues branques (disjunció)
\( \) agrupa patrons dins un àtom
\& \n el patró sencer, el n-èssim grup ()
\u \l caràcter en minúscules, en majúscules
\c \C ignora, concorda majúscules/minúscules
Desplaçaments a les ordres de cerca
n or +n n línies cap avall a la columna 1
-n n línies amunt a la column 1
e+n e-n n car. dreta, esq., del final de concordança
s+n s-n n car. dreta, esq., del principi de conc.
;sc executa l’ordre de cerca sc després
Marques i moviments
mc marca la posició actual com [a..Z]
`c `C vés a la marca c del fitxer actual, C qualsevol
`0..9 vés a les últimes posicions de sortida
`` `" posició d’abans del salt, abans de l’edició
`[ `] començament, final de l’últim text editat
:marks llista de marques actives
:jumps llista de salts
n^O n-èssima posició antiga a la llista de salts
n^I n-èssima posició nova a la llista de salts
Mapatge & abreviatures
:map c e mapar  e en modes normal i visual
:map!  c e mapar en modes d’inserció i línia d’ordres
:unmap c  :unmap!  c suprimeix el mapatge c
:mk f desa els mapatges actuals al fitxer f
:ab c e afegeix abreviatura  e
:ab c mostra les abreviatures que comencen en c
:una c suprimeix l’abreviatura c
Tags (etiquetes)
:ta t salta al tag t
:nta salta al n-èssim tag de la llista
^] ^T salta al tag sota el cursor, torna
:ts t mostra els tags que concorden i tria’n un
:tj t salta a un tag o tria’n un si s’escau
:tags mostra la llista de tags
:npo  :n^T torna de l’n-èssim tag
:tl salta a l’últim tag que concorda
^W}  :pt t previsualitza tag sota el cursor, t
^W] parteix la finestra i mostra-hi el tag sota el cursor
^Wz or :pc tanca la finestra de previsualització
Desplaçament & finestres
^E ^Y desplaça una línia amunt, avall
^D ^U desplaça mitja pàgina amunt, avall
^F ^B desplaça una pàgina amunt, avall
zt or z posa la línia actual dalt de la finestra
zz or z.  línia actual al mig de la finestra
zb or z- línia ctual a baix de la finestra
zh zl desplaça un caràcter a la dreta, esquerra
zH zL desplaça mitja pantalla a la dreta, esquerra
^Ws or :split parteix la finestra en dues
^Wn or :new crea una finestra nova buida
^Wo or :on fes que la finestra actual sigui la única
^Wj ^Wk vés a la finestra d’amunt, d’avall
^Ww ^W^W finestra d’amunt, d’avall (cíclicament)
Ordres Ex ()
:e f edita el fitxer f, excepte si s’han fet canvis
:e!  f edita el fitxer f
:wn :wN desa aquest fitxer i edita el següent, l’anterior
:n :N edita el fitxer següent, anterior de la llista
:rw escriu el rang r al fitxer actual
:rf escriu el rang r al fitxer f
:rw>>f escriu el rang r al final de f
:q :q! surt amb confirmació, perdent els canvis
:wq or 😡 or ZZ desa aquest fitxer i surt
<up> <down> autocompleta ordres
:r f insereix el contingut de f sota el cursor
:r!  c insereix la sortida de l’ordre c
:all obre una finestra per cada fitxer
:args mostra la línia d’ordres
Rangs
, ;  separa dos nombres de línia, primera línia
n nombre de línia absolut
.   $ línia actual, última línia del fitxer
% '<,'> fitxer sencer, àrea visual
't posició de la marca t
/p/ ?p? línia següent, anterior, on p concorda
+n -n +n-n al nombre de línia anterior
Plecs
zf zfm fes un plec de l’àrea visual, del moviment m
:rfo fes un plec del rang r
zd zE esborra el plec sota el cursor, tots els visibles
zo zc zO zC obre, tanca un plec; recursivament
[z ]z vés al començament, final del plec actual
zj zk vés al plec de més avall, amunt
Miscel.lània
:sh  :!c intèrpret d’ordres, executa-hi c
K cerca la paraula sota el cursor al man
:make executa make i vés al primer error
:cn  :cp mostra l’error següent, anterior
:cl  :cf mostra tots els errors, d’un fitxer
^L ^G redibuixa la pantalla, mostra fitxer i posició
g^G mostra coordenades del cursor
ga mostra la valor ASCII del caràcter sota el cursor
gf obre fitxer amb el nom que apareix al cursor
:redir>f redirigeix la sortida al fitxer f
:mkview [f] desa l’estat actual [al fitxer f]
:loadview [f] carrega un estat [del fitxer f]
^@ ^K ^_  \  Fn ^Fn tecles no mapades
Invocació
vim f +n obre el fitxer f i vés a la línia n
vim -t t vés al tag t
vim -p <fitxers> obre els fitxers en pestanyes
vim -o <fitxers> obre en finestres, horitzontalment
vim -O <fitxers> obre en finestres, verticalment

L’he tret d’aquí, la traducció al català d’aquest manual ràpid és de Enric Meinhardt Llopis i la versió original de Laurent Grégoire

Add a Comment

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *