File: vim-01-beginner.tutor

package info (click to toggle)
vim 2%3A9.1.2103-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 93,456 kB
  • sloc: ansic: 433,730; cpp: 6,399; makefile: 4,597; sh: 2,397; java: 2,312; xml: 2,099; python: 1,595; perl: 1,419; awk: 730; lisp: 501; cs: 458; objc: 369; sed: 8; csh: 6; haskell: 1
file content (1029 lines) | stat: -rw-r--r-- 36,214 bytes parent folder | download | duplicates (2)
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
#             Benvenuto   alla   guida   introduttiva   VIM

Vim è un editor molto potente, che ha molti comandi, troppi per poterli
spiegare in una guida introduttiva come questa. Questa guida introduttiva è
stata preparata per descrivere i comandi che servono a poter usare facilmente
Vim come editor di uso generale. È IMPORTANTE ricordarsi che questa guida è
stata preparata per apprendere facendo pratica. Ciò significa che occorre fare
gli esercizi, per poter apprendere davvero. Limitandosi a leggere il testo, si
finirebbe per dimenticare presto le cose più importanti!

Per iniziare, assicuratevi che il tasto di blocco maiuscole NON sia premuto e
premete ripetutamente il tasto `j`{normal} per muovere il cursore, finché la
Lezione 0 riempia completamente lo schermo.

# Lezione 0

NOTA: I comandi dati durante le lezioni modificheranno il testo, ma le
modifiche da voi effettuate non saranno salvate. Quindi non preoccupatevi
se fate pasticci; ricordate che premendo il tasto [<Esc>](<Esc>) e poi
[u](u) verrà annullata l'ultima modifica.

Questa guida è interattiva, e ci sono alcune cose che dovreste sapere.
- Battete [<Invio>](<Enter>) sui link [come questo](holy-grail    ) per aprire la parte di help relativa.
- O semplicemente battete [K](K) su una parola qualsiasi per trovare la relativa
  documentazione!
- Talvolta vi viene richiesto di modificare righe di testo come
questa qui
Una volta fatte correttamente le modifiche richieste, il segno ✗ a sinistra
della riga diverrà ✓. Penso iniziate a intuire quanto Vim sia bello. ;)
Altre volte vi viene richiesto di eseguire un comando (vedere più sotto):
~~~ cmd
    :help <Invio>
~~~
o di battere una sequenza di tasti
~~~ normal
    <Esc>0f<Spazio>d3wP$P
~~~

I testi racchiusi tra i segni '<' e '>' (come `<Enter>`{normal}) indicano un tasto
da premere, invece di un testo da immettere.

Ora, avanziamo verso la prossima Lezione (usa il tasto `j`{normal} per scorrere
verso il basso).

# Lezione 1.1: SPOSTARE IL CURSORE

** Per spostare il cursore, premete i tasti `h`, `j`, `k`, `l` come indicato.

         k          Nota: Il tasto `h`{normal} è a sinistra e sposta a sinistra.
     ← h   l →            Il tasto `l`{normal} è a destra e sposta a destra.
         j                Il tasto `j`{normal} assomiglia a una freccia in giù.

  1. Muovete il cursore sullo schermo, finché vi sentite a vostro agio.

  2. Tenete schiacciato il tasto "giù" (`j`{normal}) per far ripetere l'azione.
     Adesso sapete come andare alla prossima Lezione.

  3. Usando il tasto "giù", passate alla Lezione 1.2.

NOTA: Se non siete sicuri di aver usato i tasti giusti, premete <Esc> per
      tornare al modo Normal. Poi immettete ancora il comando che volevate.

NOTA: I tasti del cursore hanno lo steso effetto. Ma usando hjkl sarete in grado
      di spostarvi molto più velocemente, dopo che vi siete abituati. Davvero!

# Lezione 1.2: USCIRE DA VIM

!! NOTA: Prima di eseguire i passi elencati sotto,
leggetevi l'intera Lezione !!

 1. Premete il tasto <Esc> (per accertarvi di essere nel modo Normal).

 2. Battete:

    `:q!`{vim} `<Invio>`{normal}.

     Così si esce dall'editor, SCARTANDO qualsiasi modifica fatta.

 3. Aprite vim e tornate qui eseguendo il comando che vi ha portato a questa
     guida. Potrebbe essere:

     :Tutor <Invio>

 4. Se siete sicuri di aver memorizzato questi passi, eseguite i passi
    dall'1 al 3 per uscire dall'editor e rientrarvi.

NOTA: [:q!](:q) <Invio> SCARTA qualsiasi modifica fatta. Tra qualche Lezione
      vedremo come salvare le modifiche su un file.

 5. Spostatevi in giù col cursore, alla Lezione 1.3.

# Lezione 1.3: MODIFICARE TESTO - CANCELLARE

** Premete `x`{normal} per cancellare il carattere sotto il cursore. **

 1. Portatevi col cursore alla riga qui sotto marcata ✗.

 2. Per correggere, spostate il cursore posizionandolo sopra il
    carattere da cancellare.

 3. Premete [il tasto x](x) per cancellare il carattere di troppo.

 4. Ripetete i passi da 2 a 4 finché la frase è corretta.

La mmucca saltòò soppra lla luuna.

 5. Ora che la riga è corretta, passate alla Lezione 1.4.

NOTA: Nel seguire questa guida, non tentate di memorizzare, è
      meglio imparare facendo pratica.

# Lezione 1.4: EDITARE UN TESTO: INSERIMENTI

** Premete `i`{normal} per inserire del testo. **

 1. Portatevi col cursore alla prima riga sotto, marcata ✗.

 2. Per rendere la riga uguale alla seguente, spostate il cursore fino
    a sovrapporvi al print carattere DOPO il testo che va inserito.

 3. Premete `i`{normal} e immettete le aggiunte richieste.

 4. Dopo aver corretto ogni siingolo errore premete `<Esc>`{normal}
    per ritornare al modo Normal.
    Ripetete i passi da 2 a 4 per correggere la frase.

Un po' testo mca questa .
Un po' di testo manca da questa riga.

 5. Quando vi sentite a vostro agio nell'inserire del testo, passate alla
    Lezione 1.5.

# Lezione 1.5: EDITARE UN TESTO: AGGIUNGERE A FINE RIGA

** Premete `A`{normal} per aggiungere del testo a fine riga. **

 1. Portatevi col cursore alla prima riga sotto marcata ✗.
    Non importa su che carattere sta il cursore nella riga.

 2. Premete [A](A) e aggiungete quanto manca.

 3. Una volta finito di aggiungere testo, premete `<Esc>`{normal}
    per ritornare al modo Normal.

 4. Portatevi col cursore alla seconda riga marcata ✗ e ripetete
    i passi 2 e 3 per correggere la frase.

Un po' di testo manca da que
Un po' di testo manca da questa riga.
Un po' di testo man
Un po' di testo manca anche qui.

 5. Quando vi sentite a vostro agio nell'aggiungere del testo in fondo
    alla riga, passate alla Lezione 1.6.

# Lezione 1.6: EDITARE UN FILE

** Usate `:wq`{vim} per salvare un file e uscire da Vim. **

!! NOTA: Prima di eseguire i passi elencati sotto,
leggetevi l'intera Lezione !!

 1. Uscite da questa guida come avete fatto nella Lezione 1.2: `:q!`{vim}
    O, se avete accesso a un altro terminale, digitate quel che segue in
    quel terminale.

 2. Dal prompt della shell battete questo comando:
~~~ sh
     $ vim tutor
~~~
    'vim' è il comando che fa partire l'editor Vim, 'tutor' è il nome
    del file che desiderate editare.  Usate un file che siete in grado di
    modificare.

 3. Inserite e cancellate del testo, come visto nella Lezione precedente.

 4. Salvate il file con le modifiche da voi fatte e uscite da Vim immettendo:
~~~ cmd
     :wq
~~~

    Notate che occorre premete `<Invio>` perché il comando sia eseguito.

 5. Se siete usciti dalla guida Vim nel Passo 1, fate ripartire la guida Vim
    e posizionatevi sul sommario qui sotto.

 6. Dopo aver letto e capito tutti i passi visti qui sopra: metteteli in pratica.

# Lezione 1 SOMMARIO

 1. Il cursore su muove usando i tasti freccia o i tasti h j k l.
        h (sinistra)   j (giù)       k (sù)       l (destra)

 2. Per far partire Vim dal prompt della shell immettete:

~~~ sh
    $ vim NOME-DI-FILE
~~~

 3. Per uscire da Vim battete: `<Esc>`{normal} `:q!`{vim} `<Invio>`{normal}
    per buttar via tutte le modifiche.
               OPPURE battete: `<Esc>`{normal} `:wq`{vim} `<Invio>`{normal}
    per salvare le modifiche fatte.

 4. Per cancellare il carattere sotto il cursore battete: `x`{normal}

 5. Per inserire o aggiungere in fondo del testo battete:
    `i`{normal} inserire   testo `<Esc>`{normal}     inserire prima del cursore.
    `A`{normal} aggiungere testo `<Esc>`{normal}     aggiungere a fine riga.

NOTA: Premendo `<Esc>`{normal} si entra nel modo Normal e, se del caso, si
      annulla un comando parzialmente immesso, che non volete eseguire.

Ora continuate con la Lezione 2.

# Lezione 2.1: COMANDI PER CANCELLARE

** Battete `dw`{normal} per cancellare una parola. **

 1. Premete `<Esc>`{normal} per assicurarvi di essere nel modo Normal.

 2. Portatevi col cursore alla riga qui sotto marcata ✗.

 3. Portatevi col cursore all'inizio di una parola che va cancellata

 4. Battete [d](d)[w](w) per cancellare la parola.

Ci sono penna alcune parole matita che non appartengono carta a questa frase.

 5. Ripetete i passi 3 e 4 finché la frase è corretta e andate alla Lezione 2.2.

# Lezione 2.2: ANCORA COMANDI PER CANCELLARE

** Battete `d$`{normal} per cancellare fino a fine riga. **

 1. Premete `<Esc>`{normal} per assicurarvi di essere nel modo Normal.

 2. Portatevi col cursore alla riga qui sotto marcata ✗.

 3. Portatevi col cursore alla fine della riga corretta (DOPO il primo . ).

 4. Battete `d$`{normal} per cancellare fino a fine riga.

Qualcuno ha scritto due volte la fine di questa riga. fine di questa riga.

 5. Passate alla Lezione 2.3 per capire cosa sta accadendo.

# Lezione 2.3: OPERATORI E MOVIMENTI

Molti comandi che modificano del testo sono composti da un [operatore](operator) e
da un [movimento](navigation).
Il formato di un comando delete con l'operatore [d](d) è il seguente:

    d   movimento

  Dove:
    d         - è l'operatore per "delete" (cancella)
    movimento - indice dove l'operatore agisce (vedere sotto).

  Una breve lista di movimenti:
    [w](w) - fino a inizio prossima parola, ESCLUSO il carattere iniziale.
    [e](e) - fino alla fine della parola corrente, INCLUSO l'ultimo carattere.
    [$]($) - fino a fine riga, INCLUSO l'ultimo carattere.

  Quindi battendo `de`{normal} cancella dalla posizione del cursore a fine parola.

NOTA:  Premendo solo il carattere di movimento in modo Normal, senza un operatore
       sposterà il cursore come specificato.

# Lezione 2.4: USARE UN CONTATORE PER UN MOVIMENTO

** Un numero prima di un movimento lo ripete altrettante volte. **

 1. Portatevi col cursore all'inizio della riga qui sotto, marcata ✓ .

 2. Battete `2w`{normal} per spostare il cursore due parole in avanti.

 3. Battete `3e`{normal} per spostare il cursore alla fine della terza parola
    in avanti.

 4. Battete `0`{normal} ([zero](0)) per andare all'inizio della riga.

 5. Ripetete i passi 2 e 3 con numeri differenti.

Questa è solo una riga con delle parole per imparare a muovere il cursore.

 6. Passate alla Lezione 2.5.

# Lezione 2.5: USARE UN CONTATORE PER CANCELLARE DI PIÙ

** Un numero prima di un operatore lo ripete altrettante volte. **

Usando l'operatore delete con un movimento di quelli visti sopra, si può
inserire un contatore prima del movimento, per cancellare di più
     d   numero   movimento

 1. Portatevi col cursore alla prima parola MAIUSCOLA sulla riga marcata ✗.

 2. Battete `d2w`{normal} per cancellare le due parole MAIUSCOLE.

 3. Ripetete i passi 1 e 2 con un contatore differente per cancellare tutte
    le parole MAIUSCOLE consecutive, con un solo comando.

Questa ABC DE riga FGHI JK LMN OP di parole è stata Q RS TUV pulita.

# Lezione 2.6: AGIRE SU INTERE RIGHE

** Battete `dd`{normal} per cancellare un'intera riga. **

A causa della frequenza con cui capita di cancellare intere righe,
chi ha progettato Vim ha deciso che sarebbe stato più semplice battere
due volte la lettera d per cancellare una riga.

 1. Portatevi col cursore alla seconda riga nella frase sotto.
 2. Battete [dd](dd) per cancellare la riga.
 3. Poi spostatevi alla riga numero 4.
 4. Battete `2dd`{normal} per cancellare due righe.

1)  Le rose sono rosse,
2)  Il fango è divertente,
3)  Le viole sono blu,
4)  Io ho un'automobile,
5)  Gli orologi ti dicono l'ora,
6)  Dolce è lo zucchero,
7)  Ma non quanto sei tu.

# Lezione 2.7: IL COMANDO UNDO

** Premete `u`{normal} per annullare l'ultimo comando, `U`{normal} per farlo su un'intera riga. **

 1. Portatevi col cursore alla riga qui sotto marcata ✗ e posizionatelo
    sul primo errore.
 2. Battete `x`{normal} per cancellare il primo carattere indesiderato.
 3. Poi battete `u`{normal} per annullare l'ultimo comando eseguito.
 4. Poi correggete tutti gli errori sulla riga con il comando `x`{normal}.
 5. Poi battete `U`{normal} per riportare la riga a come era all'inizio.
 6. Poi battete `u`{normal} più volte per annullare l'effetto di `U`{normal}
    e i comandi precedenti.
 7. Ora battete `<C-r>`{normal} (Control + R) più volte per rieseguire i comandi
    (annullare gli annullamenti).

Corregggete gli errori ssu queesta riga e rimettetelli usanndo undo.

 8. Questi comandi sono molto utili. Potete procedere al Sommario della Lezione 2.

# Lezione 2 SOMMARIO

 1. Per cancellare dal cursore fino alla parola seguente battete:    `dw`{normal}
 2. Per cancellare dal cursore a fine riga battete:                  `d$`{normal}
 3. Per cancellare un'intera riga battete:                           `dd`{normal}
 4. Per ripetere un movimento metteteci davanti un numero:           `2w`{normal}

 5. Il formato di un comando di modifica è:
               operatore   [numero]   movimento
    dove:
       operatore -   indica l'azione, come [d](d) per cancellare (delete)
       [numero]  -   è un contatore opzionale per ripetere il movimento
       movimento -   indica quanto esteso è il campo su cui operare, come:
                        [w](w) (parola, word),
                        [$]($) (fine della riga), etc.

 6. Per spostarsi a inizio riga si usa uno zero: [0](0)

 7. Per annullare azioni precedenti, battete:             `u`{normal}  (u minuscolo)
    Per annullare tutte le modifiche a una riga, battete: `U`{normal}  (U maiuscolo)
    Per annullare gli annulli, battete:                   `<C-r>`{normal}

# Lezione 3.1: IL COMANDO PUT

** Battete `p`{normal} per inserire il testo appena cancellato dopo il cursore. **

 1. Portatevi col cursore alla prima riga marcata ✓ sotto.

 2. Battete `dd`{normal} per cancellare la riga e metterla in un registro Vim.

 3. Portatevi col cursore alla riga c), SOPRA dove va messa la riga cancellata.

 4. Battete `p`{normal} per inserire la riga sotto quella dove è il cursore.

 5. Ripetete i passi da 2 a 4 per inserire tutte le righe nell'ordine corretto.

d) Puoi impararla anche tu?
b) Le viole sono blu,
c) L'intelligenza si impara.
a) Le rose sono rosse,

# Lezione 3.2: IL COMANDO RIMPIAZZA

** Battete `rx`{normal} per rimpiazzare il carattere sotto il cursore con x. **

 1. Portatevi col cursore alla prima riga sotto marcata ✗.

 2. Spostate il cursore fino a posizionarlo sopra al primo errore.

 3. Battete `r`{normal} e poi il carattere "giusto".

 4. Ripetete i passi 2 e 3 finché la prima riga è uguale alla seconda.

Quwndo questa riga è stata imbessa, qualcuno ha premato i tasti sballiati!
Quando questa riga è stata immessa, qualcuno ha premuto i tasti sbagliati!

 5. Ora passate alla Lezione 3.3.

NOTA: Non dimenticate è meglio imparare provando, e non memorizzando.

# Lezione 3.3: L'OPERATORE CAMBIA `c`{normal}

** Per cambiare fino alla fine di una parola, battete `ce`{normal}. **

 1. Portatevi col cursore alla prima riga sotto marcata ✗.

 2. Posizionate il cursore sulla prima "a" di "rana".

 3. Battete `ce`{normal} e la parola corretta (in questo caso, battete "iga" ).

 4. Premete `<Esc>`{normal} e posizionatevi sul successivo carattere da
     cambiare.

 5. Ripetete i passi 3 e 4 finché la prima frase è uguale alla seconda.

Questa rana ha alcune papere che vanga cambiate uscita il comando change.
Questa riga ha alcune parole che vanno cambiate usando il comando change.

Notare che [c](c)e cancella la parole e vi mette in modo Insert.

# Lezione 3.4: ALTRE MODIFICHE USANDO `c`{normal}

** L'operatore cambia si usa con gli stessi movimenti di cancella. **

 1. L'operatore cambia funziona come l'operatore cancella. Il formato è:

         c    [numero]   movimento

 2. I movimenti sono gli stessi, come `w`{normal} (parola) e `$`{normal} (fine-riga).

 3. Spostatevi alla prima riga sotto marcata ✗.

 4. Portatevi col cursore alla prima parola errata.

 5. Battete `c$`{normal} e battete il resto della riga come la seguente
    e premete `<Esc>`{normal}.

La fine di questa riga ha bisogno di aiuto per divenire uguale alla seguente.
La fine di questa riga va corretta usando il comando `c$`.

NOTA: Si può usare il tasto Backspace per correggere errori di battitura.

# Lezione 3 SOMMARIO

 1. Per reinserire del testo che è stato appena cancellato, battete [p](p).
    Questo comando mette il testo appena cancellato DOPO il cursore
    (se una riga intera era stata cancellata, questa diverrà la riga SOTTO
    il cursore).

 2. Per rimpiazzare il carattere sotto il cursore, battete [r](r) e poi il
    carattere che volete sostituire a quello.

 3. Il comando [change](c) consente di cambiare il testo dalla posizione
    del cursore fino a dove il movimento lo porta.  Battete `ce`{normal}
    per cambiare dalla posizione del cursore alla fine della parola, e
    `c$`{normal} per cambiare il testo fino alla fine della riga.

 4. Il formato per il comando che cambia del testo è:

     c   [numero]   movimento

Adesso passate alla prossima Lezione.

# Lezione 4.1: POSIZIONE DEL CURSORE E STATO DEL FILE

** Battete `<C-g>`{normal} per visualizzare la vostra posizione
 all'interno del file, e lo stato del file.
 Battete `G`{normal} per andare a una data riga nel file. **

!! NOTA: Prima di eseguire i passi elencati sotto,
leggetevi l'intera Lezione !!

 1. Tenendo premuto il tasto `<Ctrl>`{normal} premete `g`{normal}.  Questo si indica
    scrivendo `<C-g>`{normal}.  Un messaggio apparirà in fondo alla pagina
    con il nome del file e la posizione all'interno del file.  Memorizzate
    il numero di riga per il Passo 3 sotto.

NOTA: La posizione del cursore si può vedere nell'angolo in basso a destra
      dello schermo.  Ciò accada se è stata specificata l'opzione ['ruler']('ruler').
 2. Battete [G](G) per portarvi in fondo al file.
    Battete [gg](gg) per portarvi in cima al file.

 3. Battete il numero della riga in cui eravate e poi `G`{normal}.  In questo modo
    tornerete alla riga in cui eravate al momento di battere `<C-g>`{normal}.

 4. Se vi sentite sicuri del fatto vostro, eseguite i passi da 1 a 3.

# Lezione 4.2: IL COMANDO CERCA

** Battete `/`{normal} seguito da una frase, per cercare quella frase. **

 1. In modo Normal battete il carattere `/`{normal}.  Notate che il carattere
    stesso e il cursore sono in fondo alla schermo, dove vengono anche
    visualizzati i comandi che iniziano per `:`{normal}.

 2. Ora battete 'errroore' `<Invio>`{normal}.  Questa è la parola che volete
    cercare.

 3. Per cercare ancora la stessa frase, simply battete [n](n).
    Per cercare la stessa frase nella direzione opposta, battete [N](N).

 4. Per cerca una frase all'indietro, usate [?](?) invece che `/`{normal}.

 5. Per tornare dove eravate prima premete `<C-o>`{normal} (tenendo premuto
    il tasto `<Ctrl>`{normal} premete la lettera `o`{normal}).  Ripetete
    per tornare ancora più indietro.  `<C-i>`{normal} per andare in avanti.

"errroore" non è il modo giusto di scrivere errore; errroore è un errore.

NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio, a meno
      che l'opzione ['wrapscan']('wrapscan') sia inattiva.

# Lezione 4.3: CERCARE PARENTESI CORRISPONDENTI

** Battete `%`{normal} per trovare una corrispondenza a ),], o }. **

 1. Posizionate il cursore su una qualsiasi (, [, o { nella riga sotto
    marcata ✓.

 2. Ora battete il carattere [%](%).

 3. Il cursore si sposterà sulla parentesi corrispondente.

 4. Battete `%`{normal} per spostare il cursore sull'altra parentesi
    corrispondente.

 5. Portatevi col cursore su un'altra (,),[,],{ o } e guardate cosa fa
    il comando `%`{normal}.

Questa ( è una riga di test che contiene (, [, ] e { } al suo interno. ))

NOTA: Questo comando è molto utile per correggere un programma con qualche
      parentesi mancante o posizionata male!

# Lezione 4.4: IL COMANDO SOSTITUISCI

** Battete `:s/vecchio/nuovo/g` per sostituire "nuovo" a "vecchio". **

 1. Portatevi col cursore alla riga qui sotto marcata ✗.

 2. Battete
~~~ cmd
    :s/laa/la/
~~~

    NOTATE che il comando [:s](:s) la cambiato solo il primo "laa" della riga.

 3. Adesso battete
~~~ cmd
     :s/laa/la/g
~~~

    Aggiungendo il flag [flag](:s_flags) si chiede di sostituire globalmente
    sulla riga, ossia di cambiare tutte le occorrenze di "laa" della riga.

Di solito laa stagione migliore per ammirare i fiori è laa primavera.

 4. Per cambiare ogni occorrenza di una stringa in un gruppo di righe
    battete
~~~ cmd
     :#,#s/vecchio/nuovo/g
~~~
    Dove #,# sono i numeri iniziale e finale del gruppo di righe dove va
    fatta la sostituzione.

    Battete
~~~ cmd
    :%s/vecchio/nuovo/g
~~~
    per cambiare ogni occorrenza di una stringa nell'intero file.

    Battete
~~~ cmd
    :%s/vecchio/nuovo/gc
~~~
    per trovare ogni occorrenza di una stringa nell'intero file, e ricevere
    la richiesta se cambiare oppure no ogni particolare occorrenza.

# Lezione 4 SOMMARIO

 1. `<C-g>`{normal}     visualizza posizione e stato del file.
    `G`{normal}         va all'ultima riga del file.
     numero `G`{normal} va al numero di riga specificato.
    `gg`{normal}        va alla prima riga del file.

 2. Battendo `/`{normal} seguito da una frase cerca la frase in AVANTI.
    Battendo `?`{normal} seguito da una frase cerca la frase all'INDIETRO.
    Dopo aver trovato una corrispondenza battete `n`{normal} per cercare la
    corrispondenza successiva nella stessa direzione, oppure `N`{normal}
    per cercarla nella direzione opposta.
    `<C-o>`{normal} vi riposta indietro a posizioni precedenti,
    `<C-i>`{normal} vi riporta avanti verso le posizioni più recenti.

 3. Battendo `%`{normal} mentre il cursore è su (,),[,],{, o } sposta il
    cursore alla parentesi corrispondente.

 4. Per sostituire "nuovo" alla prima occorrenza di "vecchio" in una riga
    battete
~~~ cmd
        :s/vecchio/nuovo
~~~
    Per sostituire "nuovo" per tutti i "vecchio" di una riga battete
~~~ cmd
        :s/vecchio/nuovo/g
~~~
    Per sostituire frasi nell'intervallo di righe da "#" a "#"  battete
~~~ cmd
        :#,#s/vecchio/nuovo/g
~~~
    Per sostituire tutte le occorrenze nel file battete
~~~ cmd
        :%s/vecchio/nuovo/g
~~~
    Per chiedere conferma per ogni possibile modifica, aggiungete il flag 'c'
~~~ cmd
        :%s/vecchio/nuovo/gc
~~~
%%%%
# Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO

** Battete `:!`{vim} seguito da un comando esterno, per eseguire quel comando. **

 1. Battete il familiare comando `:`{normal} per portare il cursore in fondo allo
    schermo.  Ciò vi consente di immettere un comando dalla riga-di-comando.

 2. Ora battete il carattere [!](!cmd) (punto esclamativo).  Questo permette di
    eseguire qualsiasi comando esterno della shell.

 3. Come esempio battete "ls" dopo il "!" e poi date `<Invio>`{normal}.
    Ciò vi mostrerà una lista dei file nella vostra directory, proprio come se
    deste il comando dalla shell.

NOTA: Si può eseguire qualsiasi comando esterno in questo modo, si possono
      anche specificare degli argomenti per il comando.

NOTA: Tutti il comandi `:`{vim} vanno completati battendo `<Invio>`{normal}.
      Da qui in poi non lo ricorderemo tutte le volte.

# Lezione 5.2: RISCRIVERE I FILE

** Per salvare le modifiche fatte al testo, battete `:w`{vim} NOME-FILE. **

 1. Battete `:!ls`{vim} per ottenere la lista dei file nella vostra directory.
    Già sapete di dover battere `<Invio>`{normal} per far eseguire il comando.

 2. Scegliete un nome-file che ancora non esiste, come TEST.

 3. Poi battete:
~~~ cmd
        :w TEST
~~~
   (dove TEST indica il nome-file da voi scelto.)

 4. Questo comando salva l'intero file (il file Vim Tutor) con il nome TEST.
    Per verificarlo, battete `:!ls`{vim} ancora per vedere i file nella
    vostra directory.

NOTA: Se uscite da Vim e chiamate Vim di nuovo battendo `vim TEST`, il file
      in edit è una copia esatta del file di guida, quando è stato salvato.

 5. Ora cancellate il file battendo:
~~~ cmd
        :!rm TEST
~~~

# Lezione 5.3: SCRIVERE SOLO PARTE DEL TESTO

** Per salvare solo una parte del file, battete `v`{normal} movimento
 `:w NOME-FILE`{vim}. **

 1. Portatevi col cursore su questa riga.

 2. Premete [v](v) e spostate il cursore alla riga marcata 5. qui sotto.
    Notate che il testo selezionato è evidenziato.

 3. Premete il tasto `:`{normal}.  A fondo schermo apparirà

        :'<,'>

 4. Battete

        `:w TEST`{vim}

    dove TEST è un nome-file non ancora esistente. Verificate di vedere

        `:'<,'>w TEST`{vim}

    prima di premere `<Invio>`{normal}.

 5. Vim scriverà le righe selezionate al file TEST. Usate `:!ls`{vim} per
    controllare.
    Non cancellate subito il file!  Sarà usato nella prossima Lezione.

NOTA: Premendo [v](v) iniziate il modo [selezione Visuale](visual-mode).  Potete
      usare il cursore per rendere la selezione più piccola o più grande.
      Poi potete usare un operatore per fare qualcosa col testo così
      selezionato.  Per esempio, `d`{normal} cancella tutto il testo.

# Lezione 5.4: AGGIUNGERE INTERI FILE E UNIRE FILE

** Per inserire il contenuto di un file, battete `:r NOME-FILE`{vim}. **

 1. Posizionate il cursore sopra questa riga.

NOTA:  Dopo aver eseguito il Passo 2 vedrete del testo dalla Lezione 5.3.
       Quindi, spostatevi in GIÙ per vedere di nuovo questa Lezione.

 2. A questo punto, inserite il vostro file TEST usando il comando

        `:r TEST`{vim}

     dove TEST è il nome del file che avete usato più sopra.
     Il file da voi letto viene inserito sotto la riga del cursore.

 3. Per verificare che è stato inserito un file, portatevi indietro col
    cursore e vedrete che ci sono ora due copie della Lezione 5.3, quella
    originale e quella inserita da voi, prendendola dal file.

NOTA: Si può anche leggere l'output prodotto da un comando esterno.
      Per esempio,

        `:r !ls`{vim}

      mette l'output del comando `ls` a partire dalla riga sotto il cursore.

# Lezione 5 SOMMARIO

 1. [:!comando](:!cmd) esegue un comando esterno.

     Alcune esempi utili sono:
     `:!ls`{vim}              -  mostra i file di una directory
     `:!rm NOME-FILE`{vim}    -  cancella il file NOME-FILE

 2. [:w](:w) NOME-FILE           scrive il file in edit su disco con il nome
                                 NOME-FILE.

 3. [v](v)  movimento  :w NOME-FILE   salva le righe selezionate in
                                 modo Visual nel file chiamato NOME-FILE.

 4. [:r](:r) NOME-FILE           legge da disco il file NOME-FILE e lo
                                 inserisce nella riga sotto il cursore.

 5. [:r !dir](:r!)               legge l'output del comando dir e lo
                                 inserisce nella riga sotto il cursore.

# Lezione 6.1: IL COMANDO OPEN

** Battete `o`{normal} per aprire una nuova riga sotto a quella del cursore
   e per mettervi in modo Insert sulla riga. **

 1. Portatevi col cursore alla riga qui sotto marcata ✓.

 2. Battete la lettera minuscola `o`{normal} per [aprire](o) una riga sotto il
    cursore e mettervi in modo Insert.

 3. Ora battete del testo e premete `<Esc>`{normal} per uscire dal modo Insert.

Dopo battuto `o`{normal} il cursore si sposta sulla riga nuova in modo Insert.

 4. Per aprire una riga SOPRA il cursore, semplicemente battete una
    [O maiuscola](O), invece che una `o`{normal} minuscola.
    Provate a farlo con la riga sotto.

Aprite una riga sopra questa battendo O mentre il cursore è su questa riga.

# Lezione 6.2: IL COMANDO AGGIUNGI

** Battete `a`{normal} per inserire del testo DOPO il cursore. **

 1. Portatevi col cursore all'inizio della riga sotto marcata ✗.

 2. Premete `e`{normal} fino a che il cursore sia alla fine di "ri".

 3. Battete la lettera minuscola `a`{normal} per [aggiungere](a) testo DOPO
    il cursore.

 4. Completate la parole come nella riga sotto. Premete `<Esc>`{normal} per
    uscire dal modo Insert.

 5. Usate `e`{normal} per spostarvi sulla parola incompleta seguente e
    ripetete i passi 3 e 4.

Questa ri serve per far prat ad aggiungere testo a una riga.
Questa riga serve per far pratica ad aggiungere testo a una riga.

NOTA: I comandi [a](a), [i](i) e [A](A) fanno tutti andate al modo Insert,
      la sola differenza è dove vengono inseriti i caratteri.

# Lezione 6.3: UN ALTRO MODO PER RIMPIAZZARE

** Battete una `R`{normal} maiuscola per rimpiazzare più caratteri. **

 1. Portatevi col cursore alla prima riga sotto marcata ✗. Portatevi col
    cursore all'inizio del primo "xxx".

 2. Poi premete `R`{normal} ([R maiuscolo](R)) e inserite il numero che
    vedete sulla riga seguente, in modo da rimpiazzare "xxx".

 3. Premete `<Esc>`{normal} per uscire dal [modo Replace](mode-replace).
    Notate che il resto della riga non viene cambiato.

 4. Ripetete i passi per rimpiazzare l'altro "xxx".

Sommando 123 a xxx si ottiene xxx.
Sommando 123 a 456 si ottiene 579.

NOTA: Il modo Replace è come il modo Insert, ma ogni carattere immesso cancella
      un carattere del testo.

# Lezione 6.4: COPIARE E INCOLLARE TESTO

** Usare l'operatore `y`{normal} per copiare testo e `p`{normal} per incollarlo. **

 1. Andate alla riga marcata con ✓ sotto e posizionate il cursore dopo "a)".

 2. Entrate in mod Visual con `v`{normal} e spostate il cursore subito prima
    di "primo".

 3. Battete `y`{normal} per [copiare](yank) (copy) il testo evidenziato.

 4. Portatevi col cursore alla fine delle riga seguente: `j$`{normal}

 5. Battete `p`{normal} per [incollare](put) il testo.

 6. Premete `a`{normal} e poi battete "secondo". Premete `<Esc>`{normal} per
    uscire dal modo Insert.

 7. Usate il modo Visual per selezionare "elemento.", copiatelo con `y`{normal},
    andate alla fine della riga seguente con `j$`{normal} e incollate lì il
    testo con `p`{normal}

a) Questo è il primo elemento.
b)

NOTA: SI può usare `y`{normal} come un operatore: `yw`{normal} copia una parola.

# Lezione 6.5: IMPOSTARE UN'OPZIONE

** Impostare un'opzione per ignorare la distinzione maiuscolo/minuscolo
   quando si cerca o si sostituisce. **

 1. Cercate la parola 'premete' col comando: `/premete`
    ripetete più volte premendo `n`{normal}.

 2. Impostate l'opzione the 'ic' (Ignora MAIUSCOLO/minuscolo) battendo:
~~~ cmd
        :set ic
~~~
 3. Poi cercate ancora 'ignore' premendo `n`{normal}.
    Notate che ora vengono trovate anche le parole Premete e PREMETE.

 4. Impostate le opzioni 'hlsearch' e 'incsearch':
~~~ cmd
        :set hls is
~~~
 5. Ora battete il comando di ricerca e guardate cosa succede:
    /premete <Invio>

 6. Per tornare a distinguere MAIUSCOLO/minuscolo battete:
~~~ cmd
        :set noic
~~~
 7. Per invertire il valore di un'opzione, metteteci davanti "inv":
~~~ cmd
        :set invic
~~~
NOTA: Per rimuovere l'evidenziazione delle corrispondenze battete:
~~~ cmd
        :nohlsearch
~~~
NOTA: Se volete ignorare la distinzione MAIUSCOLO/minuscolo solo una volta,
      usate [\c](/\c) nel comando: /premete\c <Invio>

# Lezione 6 SOMMARIO

 1. Battete `o`{normal} per aprire una riga sotto il cursore e entrare
    in modo Insert.
    Battete `O`{normal} per aprire una riga SOPRA il cursore.

 2. Battete `a`{normal} per inserire del testo DOPO il cursore.
    Battete `A`{normal} per aggiungere del testo a fine riga.

 3. Il comando `e`{normal} sposta il cursore a fine parola.

 4. Il comando `y`{normal} copia del testo, `p`{normal} lo incolla.

 5. Battendo `R`{normal} maiuscola si entra nel modo Replace
    fino a quando non si preme il tasto `<Esc>`{normal}.

 6. Battendo "[:set](:set) xxx" imposta l'opzione "xxx".
    Alcune opzioni sono:

        'ic' 'ignorecase'   ignorare MAIUSCOLO/minuscole nella ricerca
        'is' 'incsearch'    mostra corrispondenze parziali in ricerca
        'hls' 'hlsearch'    evidenzia tutte le corrispondenze trovate

    Si può usare sia il nome lungo di un'opzione, che quello corto.

 7. Premettete "no" per annullare un'opzione:
~~~ cmd
        :set noic
~~~
 8. Premettete "inv" per invertire un'opzione:
~~~ cmd
        :set invic
~~~

# Lezione 7.1: OTTENERE AIUTO

** Usate il sistema di aiuto on-line. **

Vim ha un ampio sistema di aiuto on-line.  Per iniziare, provate una
di queste alternative:
    - premete il taso `<HELP>`{normal} (se disponibile)
    - premete il taso `<F1>`{normal} (se disponibile)
    - Battete
        `:help`{vim}

Leggete il testo nella finestra di help per vedere come funziona.
Battete `<C-w><C-w>`{normal} per passare da una finestra all'altra.
Battete `:q`{vim} per chiudere la finestra di aiuto.

Potete trovare aiuto su quasi tutto, fornendo un argomento al comando
":help".  Potete provare questi (non dimenticatevi di battere <Invio>):
~~~ cmd
    :help w
    :help c_CTRL-D
    :help insert-index
    :help user-manual
~~~
# Lezione 7.2: CREARE UNO SCRIPT INIZIALE

** Abilitare funzionalità di Vim. **

Vim ha molte più funzionalità rispetto a Vi, ma molte di esse sono
disabilitate per default.  Per iniziare a usare più funzionalità occorre
creare un file "vimrc".

 1. Iniziate a editare il file "vimrc" con:
    `:call mkdir(stdpath('config'),'p')`{vim}
    `:exe 'edit' stdpath('config').'/init.vim'`{vim}

 2. Salvate il file con:
    `:w`{vim}

  Potete aggiungere a questo file "vimrc" tutte le vostre impostazioni
  preferite.  Per maggiori informazioni battete `:help vimrc-intro`{vim}.

# Lezione 7.3: COMPLETAMENTI

** Completamenti nella riga-di-comando con `<C-d>`{normal} e `<Tab>`{normal}. **

 1. Guardate i file che esistono nella directory corrente: `:!ls`{vim}

 2. Battete l'inizio di un comando: `:e`{vim}

 3. Premete `<C-d>`{normal} e Vim vi mostra una lista di tutti i comandi che
    iniziano con la lettera "e".

 4. Premete `<Tab>`{normal} e Vim completerà il nome comando a ":edit".

 5. Ora aggiungete uno spazio e la lettera iniziale di un file nella vostra
    directory: `:edit FIL`{vim}

 6. Premete `<Tab>`{normal}. Vim completerà il nome (se è il solo possibile
    completamento).

NOTA: Il completamento è disponibile in parecchi comandi.  È particolarmente
      utile per il comando `:help`{vim}.

# Lezione 7 SOMMARIO

 1. Battete `:help`{vim}
    o premete il tasto `<F1>`{normal} o `<Help>`{normal} per aprire una
    finestra di aiuto.

 2. Battete `:help ARGOMENTO`{vim} per trovare aiuto su ARGOMENTO.

 3. Battete `<C-w><C-w>`{normal} per saltare da una finestra all'altra.

 4. Battete `:q`{vim} per chiudere la finestra di help.

 5. Create uno script iniziale vimrc mettendoci le vostre impostazioni
    preferite.

 6. Mentre immettete un comando, premete `<C-d>`{normal} per vedere i
    completamenti possibili.
    Premete `<Tab>`{normal} per usare uno dei completamenti visualizzati.

# CONCLUSIONE

Lo scopo di questa guida era di dare una breve panoramica sull'editor Vim,
che fosse sufficiente a permettervi di usare l'editore abbastanza facilmente.
La guida è tutt'altro che completa, Vim ha molti altri comandi.
Consultate spesso l''help.

Ci sono molte risorse on-line (in inglese) per saperne di più riguardo a Vim.
Qui sotto potete trovare un breve elenco:

- *Learn Vim Progressively*: http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
- *Learning Vim in 2014*: http://benmccormick.org/learning-vim-in-2014/
- *Vimcasts*: http://vimcasts.org/
- *Vim Video-Tutorials by Derek Wyatt*: http://derekwyatt.org/vim/tutorials/
- *Learn Vimscript the Hard Way*: http://learnvimscriptthehardway.stevelosh.com/
- *7 Habits of Effective testo Editing*: http://www.moolenaar.net/habits.html
- *vim-galore*: https://github.com/mhinz/vim-galore

Se preferite un libro (sempre in inglese), *Practical Vim* e il suo seguito
*Modern Vim* di Drew Neil sono spesso raccomandati.

Le parti più importanti dell'help di Vim (inclusa una traduzione completa
della "User Guide") sono disponibili anche in italiano.
Per procurarsi la versione italiana, vedere:
https://sites.google.com/view/vimdoc-it

Questa guida è stata scritta di Michael C. Pierce e Robert K. Ware, Colorado
School of Mines usando idee fornite da Charles Smith, Colorado State
University. E-mail: bware@mines.colorado.edu.

Modificato per Vim da Bram Moolenaar.
Modificato per vim-tutor-mode da Felipe Morales.
Tradotto in italiano da Antonio Colombo.