L'editor VI
Introducció
Com a administradors sovint
ens veurem en la necessitat de crear o modificar el contingut d'alguns
fitxers del nostre sistema de manera eficaç. És aquí
on entra en joc l'editor de fitxers 'Vi' com el més estandaritzat
i extès editor en el món del Unix.
Totes les personalitzacions
d'aplicacions, configuracions de programes, scripts que realitzaran tasques
determinades en el nostre sistema, .... i tot el que, gràcies a
les característiques d'un sistema obert que ens permet fer i adequar
a les nostres necessitats, tindran el denominador comú de l'edició
' vi '. Lògicament en aquest capítol veurem una part
(la més útil al nostre parer) del vast conjunt d'ordres i
funcions que contempla l'editor vi.
Un dels primers aspectes
a conèixer és que en el moment en què ens disposem a treballar
amb l'editor 'vi' en un arxiu determinat, l'original d'aquest es
manté inalterat, ja que es crea automàticament una còpia
que serà en la que treballarem de veritat. Aquesta còpia
residirà en un buffer de memòria temporal que només
tindrà l'efectivitat de substitució si ens disposem a gravar
els canvis produïts amb una ordre d'escriptura (w).
L'editor ' vi ' té
tres mode possibles de treball:
El mode comandament
s'activa en el mateix moment d'entrar a l'editor i permet l'execució
de les diferents funcions d'edició d'un arxiu mitjançant
l'assignació de cada una d'elles a una tecla determinada (més
endavant ho veurem amb més detall).
El mode text és
aquell que permet la introducció del propi text pla dins l'arxiu.
En aquest estat les tecles perden la seva funció especial de comanda
per passar a exercir la de simple entrada de caràcters. Sol venir precedit
de lletres comandament com la 'i', la 'a', i d'altres ordres
que comentarem en aquest capítol. Podrem tornar al mode comandament
amb la tecla 'Esc' o amb les fletxes de desplaçament del teclat.
La línia d'ordres
a la que s'accedeix des del mode de comandament mitjançant els
dos punts ( : ) permet l'execució d'ordres referents a la
totalitat de l'arxiu. Des d'aquí podrem gravar l'arxiu, posar-li
nom, sortir de l'editor, forçar gravacions a fitxers que només
siguin de lectura, la substitució de cadenes dins del fitxer, ...
L'entrada a l'editor es pot
fer de dues maneres:
vi arxiu
: aquí s'edita l'arxiu indicat, que pot existir o no. Si existeix
entrarem a l'edició mostrant-nos el seu contingut, i si no existeix
n'obrirem un en blanc que ja tindrà aquest nom en cas que el vulguem
gravar a la sortida.
vi : en aquest cas
entrarem a l'editor vi en un arxiu nou. Si optéssim per gravar l'edició
que hem fet hauríem d'especificar-li un nom a la sortida ( :w nom
)
Seguidament desglossarem per
temàtica i actuació els mode, comandes i operacions més
comunes de l'editor vi.
Funcions associades a
moviments del cursor
j |
Desplaçament d'una línia cap avall |
k |
Desplaçament d'una línia amunt |
h |
Ens desplacem un caràcter a l'esquerra |
l |
Ens desplacem un caràcter a la dreta |
M |
Ens situem a la meitat del fitxer |
b |
Mou el cursor al principi de cada paraula (retrocedint
en el text) |
e |
Mou el cursor al final de cada paraula (avançant
en el text) |
0 |
El número 0 ens situa al principi de la línia
on estem situats |
$ |
Desplacem el cursor al final de la línia |
w |
Avancem de paraula en paraula |
G |
Ens situem al principi de l'última línia
del fitxer |
1G |
Ens desplacem a l'inici de l'arxiu |
nG |
Ens desplacem fins la línia 'n' del fitxer |
Ctrl+d |
Avança mitja pàgina |
Ctrl+u |
Retrocedeix mitja pàgina |
Ctrl+b |
Retrocedeix una pàgina sencera |
Ctrl+f |
Avança una pàgina sencera |
Aquestes tecles de moviment
i posicionament del cursor també es poden utilitzar juntament amb
els operadors principals d'esborrar (d), copiar (y) i canviar (c). Així
per exemple la comanda d3G esborrarà totes les línies
que hi ha des de la que estem situats fins la línia 3.
Introducció de
text
Aquestes funcions associades
activen el mode text.
a |
Permet afegir text a continuació del cursor |
A |
Afegeix text al final de la línia on estem |
i |
Insereix text a la posició anterior al cursor |
o |
Obre una línia per sota del cursor |
O |
Obre una línia per sobre del cursor |
rx |
Reemplaça el caràcter actual pel caràcter
'x' indicat |
R |
Reemplaça el text |
Esborrat de text
Per accedir a aquesta funció
haurem d'activar el mode comandament (per sortir del mode text) pitjant
la tecla 'Esc' o bé amb les fletxes del teclat.
x |
Esborra el caràcter situat a la posició
del cursor (com la tecla "Supr") |
X |
Esborra el caràcter anterior al cursor (com la
tecla 'Backspace) |
nx |
Esborra 'n' caràcters |
dw |
Esborra des del cursor fins al començament de
la següent paraula |
dd |
Esborra la línia sencera |
d$ |
Esborra des del cursor fins al final de la línia |
ndd |
Esborra 'n' línies |
d) |
Esborra la resta de la frase a partir del cursor |
d( |
Esborra des del cursor fins al principi de la frase |
Desfer el canvis
u |
Desfà l'última acció |
U |
Desfà tots els canvis efectuats en una línia |
. |
Repeteix l'última acció que hem efectuat |
Desplaçament de
text
yy |
Copia una línia i la col·loca al búffer |
nyy |
Copia 'n' línies (comptant l'actual) |
yw |
Copia una paraula (els caràcters que hi hagi des del
cursor fins que s'acabi) |
p |
Col·loca després del cursor una còpia de
l'últim copiat o esborrat |
P |
Col·loca la còpia abans del cursor |
"cyy |
Copia una línia i la posa al búffer 'c'
(pot ser qualsevol lletra de a-z) |
"cp |
Col·loca després del cursor una còpia del
contingut del búffer 'c' |
cc |
Canvia la línia completa (previ esborrat d'ella)
per al que vulguem introduir |
Cerca i substitució
Tant la cerca com la substitució
de text s'han d'executar sota la línia de comandes. En el cas de
la cerca s'indica directament mitjançant el caràcter '/'.
La resta dels casos s'activaran
amb els dos punts (:).
/patró |
Cerca la següent aparició del patró |
?patró |
Cerca l'anterior aparició del patró |
n |
Cerca la següent coincidència |
N |
Cerca l'anterior coincidència |
En el cas de la substitució
s'haurà d'activar primer la línia de comandes amb els dos
punts.
La construcció d'una
substitució segueix l'esquema :
:1,$ s/cadena_a_cercar/nova_cadena/g
La primera part (:1,$) ens
indica que la substitució tindrà lloc des de la línia
1 fins l'última del fitxer (tot l'arxiu). La segona part ens indica
que serà la substitució (s) d'una cadena determinada existent
al fitxer per una nova cadena. Si haguéssim de substituir algun caràcter
especial (*, /, // ...) ho hauríem d'indicar amb una contrabarra
(\)
davant de cada caràcter especial.
La 'g' del final ens dóna
el caire de globalitat perquè substitueixi totes les coincidències,
de no indicar-ho només canviaria la primera de cada línia
en cas d'haver-la.
Si no volguéssim fer la
substitució en tot el fitxer i ho volguéssim en unes línies
determinades, per exemple de la 23 a la 29, ho farem així, :23,25
s/hola/adéu/g.
Operacions des de la línia
d'ordres
:n |
Ens situem al principi de la línia 'n' |
:w arxiu |
Gravem els últims canvis efectuats guardant-ho
amb el nom arxiu |
:n,m w arxiu |
Guarda les línies de la 'n' a la 'm' a l'arxiu
indicat |
:wq |
Grava els canvis i surt de l'editor |
:wq! |
Força el conjunt de gravada i sortida (encara
que sigui un fitxer de lectura) |
:x! |
Equival·lent a la wq! |
:q |
Abandona l'editor |
:q! |
Abandona l'editor descartant els últims canvis |
:e arxiu |
Edita l'arxiu indicat |
:e! |
Reedita l'arxiu descartant els canvis |
:r arxiu |
Insereix l'arxiu indicat dins de l'actual |
:se nu |
Enumera les línies del fitxer que estem editant |
:se nonu |
Desactiva la numeració de les línies |
|