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