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 |
nG ngg | 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 |
nH nL | 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 c1←c2 | 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 p, P amb el sagnat correcte |
gp gP | com p, P 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ó | |
:rs x↵ | 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..1, 0..∞, 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 c ∈[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 c ↦ 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 c ↦ 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 |
:rw f | 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