1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
===============================================================================
= Benvenuto alla G u i d a all'Editor M N V - Versione 1.7 =
===============================================================================
= C A P I T O L O DUE =
===============================================================================
Hic Sunt Dracones: Se questa è la prima volta che vi accostate a mnv
e preferite iniziare dal capitolo introduttivo, gentilmente immettete
:q<INVIO> e poi iniziate da quello.
Il tempo necessario per completare questo capitolo è di circa 8-10
minuti, a seconda del tempo utilizzato per fare delle prove.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lezione 2.1.1: I REGISTRI CON NOME
** Copiare due parole in registri diversi e poi incollarle **
1. Spostate il cursore alla riga qui sotto marcata con --->
2. Andate su una lettera qualsiasi di 'Edward' e battete "ayiw
MNEMONICO: nel registro(") di nome (a) (y)copia (i)interna (w)parola
3. Spostatevi alla parola 'biscotti' (fc o 2fb o $b o /bis<INVIO>)
e battete "byiw
4. Andate su una lettera qualsiasi di 'Vince' e battete ciw<C-r>a<ESC>
MNEMONICO: (c)cambia (i)interna (w)parola con <Contenuto (r)egistro> di nome (a)
5. Andate su una lettera qualsiasi di 'dolci' e battete ciw<C-r>b<ESC>
---> a) Edward sarà d'ora in poi responsabile della razione di biscotti
b) Come compito, Vince sarà il solo a decidere riguardo ai dolci
NOTA: Anche una parola cancellata può essere inviata ad un registro, p.es.,
"sdiw cancellerà (d) la parola sotto il cursore (iw) e la metterà
nel registro (s)
RIFERIMENTI: Registri :h registers
Registri con nome :h quotea
Momnvento :h motion.txt<INVIO> /inner<INVIO>
CTRL-R :h insert<INVIO> /CTRL-R<INVIO>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lezione 2.1.2: IL REGISTRO DELLE ESPRESSIONI
** Inserire al volo risultati di un calcolo **
1. Spostate il cursore alla riga qui sotto marcata con --->
2. Andate su un punto qualsiasi del numero fornito
3. Battete ciw<C-r>=60*60*24<INVIO>
4. Sulla riga seguente, entrate in modo Insert e aggiungete
la data di oggi con <C-r>=system('date')<INVIO>
NOTA: Tutte le chiamate a sistema dipendono dal S.O., p.es., in ambiente
Windows si usa system('date /t') o :r!date /t
---> Non ricordo il numero esatto di secondi in un giorno, è 84600?
La data di oggi è:
NOTA: Lo stesso risultato si può ottenere con :pu=system('date')
o, ancora più brevemente, con :r!date
RIFERIMENTI: Registro espressioni :h quote=
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lezione 2.1.3: I REGISTRI NUMERATI
** Battere yy e dd per vedere l'effetto sui registri **
1. Spostate il cursore alla riga qui sotto marcata con --->
2. Copiate (yy) la riga stessa e controllate i registri con :reg<INVIO>
3. Cancellate la riga che inizia con "0." con "cdd, poi controllate i
registri (Dove vi aspettate sia finita la riga cancellata?)
4. Continuate a cancellare ogni riga seguente, controllando ogni volta
con :reg il risultato
NOTA: Dovreste notare che le righe cancellate per prime scendono nella
lista, man mano che vengono aggiunte nuove righe cancellate
5. Poi incollate (p) i seguenti registri nell'ordine; c, 7, 4, 8, 2.+
ossia "cp "7p ...
---> 0. Questo
9. dondolante
8. messaggio
7. è
6. in
5. asse
4. un
3. guerresco
2. segreto
1. tributo
NOTA: Le cancellazioni di righe intere (dd) sopravvivono nei registri numerati
molto più a lungo delle copie di righe intere (yy), o delle
cancellazioni che implicano momnventi minori
RIFERIMENTI: Registri numerati :h quote0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lezione 2.1.4: IL FASCINO DELLE MARCATURE
** Evitare di contare le righe di codice **
NOTA: Un problema frequente quando si scrivono programmi è spostare numerose
righe di codice. Il metodo seguente evita di dover calcolare numeri di
riga con operazioni tipo "a147d o :945,1091d a o, ancor peggio,
usando prima i<C-r>=1091-945<INVIO>
1. Spostate il cursore alla riga qui sotto marcata con --->
2. Andate alla prima riga della funzione e marcatela con ma
NOTA: La posizione sulla riga NON è importante!
3. Spostatevi a fine riga e da qui alla fine del blocco di codice
con $%
4. Cancellate il blocco salvandolo nel registro a con "ad'a
MNEMONICO: nel registro(") di nome (a) mettere la cancellazione (d) dal
cursore fino alla RIGA che contiene il marcatore (') (a)
5. Incollare il blocco the le righe BBB e CCC "ap
NOTA: Provare più volte quest'operazione, per impratichirsi ma$%"ad'a
---> AAA
function cresciutaTroppoinFretta() {
if ( condizioneVera ) {
faiQualcosa()
}
// La classificazione della nostra funzione è cambiata
// non ha senso mantenerla nella posizione attuale
// ...immaginate centinaia di righe di codice
// Ingenuamente si potrebbe andare dall'inizio alla fine
// e annotare da qualche parte il numero di righe
}
BBB
CCC
NOTA: marcature e registri non hanno niente in comune, quindi il registro
a è completamente indipendente dalla marcatura a. Questo non vale
per i nomi dei registri e quelli delle macro di MNV.
RIFERIMENTI: Marcature :h marks
Momnventi marcature :h mark-motions (differenza fra ' e `)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lezione 2.1 SOMMARIO
1. Per inserire (copiando, cancellando) testo, e per incollarlo (incolla))
sono disponibili 26 registri (a-z)
2. Copiare una parola da una posizione qualsiasi al suo interno: yiw
3. Cambiare una parola da una posizione qualsiasi al suo interno: ciw
4. Inserire testo direttamente da registri in modo Insert: (C-r)a
5. Inserire il risultato di semplici operazioni aritmetiche in modo
Insert: (C-r)=60*60<INVIO>
6. Inserire il risultato di chiamate a sistema in modo Insert:
(C-r)=system('ls -1')
7. Controllare contenuto registri con :reg
8. Vedere dove vanno a finire le cancellazioni di intere righe: dd
nei registri numerati, ossia discendendo dal registro 1 al 9.
Osservare che le righe intere cancellate sono disponibili nei registri
numerati più a lungo di qualsiasi altra modifica
9. Vedere la destinazione finale delle operazioni di copia nei registri
numerati e controllare quanto si può aspettare che durino
10. Inserire marcature in modo Normale m[a-zA-Z0-9]
11. Spostarsi a una riga marcata con il comando '
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Qui finisce il capitolo due della guida MNV. Ci sono lavori in corso.
Questo capitolo è stato scritto da Paul D. Parker
e tradotto da Antonio Colombo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|