xref: /vim-8.2.3635/runtime/tutor/tutor.nl (revision d2ea7cf1)
1  ==========================================================================
2  =    W e l k o m   b i j   d e   V I M   l e s s e n   -   Versie 1.7    =
3  ==========================================================================
4
5  Vim is een krachtige editor met veel commando's, te veel om uit te leggen
6  in lessen zoals deze. Deze lessen zijn bedoeld om voldoende commando's te
7  behandelen om je in staat te stellen met Vim te werken als een editor voor
8  algemeen gebruik.
9
10  Deze lessen zullen 25 tot 30 minuten in beslag nemen, afhankelijk van de
11  tijd die wordt besteed aan het uitproberen van de commando's.
12
13  LET OP:
14  Door de commando's in deze lessen verandert de tekst. Maak een kopie van
15  dit bestand om mee te oefenen (als je "vimtutor" uitvoerde, is dit al een
16  kopie).
17
18  Deze lessen zijn bedoeld om al doende te leren. Dat betekent dat je de
19  commando's moet uitvoeren om ze goed te leren kennen. Als je de tekst
20  alleen maar doorleest, zal je de commando's niet leren!
21
22  Zorg ervoor dat de <Caps Lock> toets NIET is ingedrukt en druk vaak genoeg
23  op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het
24  scherm staat.
25
26  LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties
27  gebruikt binnen een commando (bv. "40 G" of "operator [getal] beweging").
28  Tik deze spaties echter NIET. Ze verstoren de werking.
29
30~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31                   Les 1.1:  VERPLAATS DE CURSOR
32
33  ** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. **
34          ^
35          k       Hint:  De h is de meest linkse en beweegt naar links.
36      < h   l >          De l is de meest rechtse en beweegt naar rechts.
37          j              De j lijkt op een pijl naar beneden.
38          v
39
40  1. Beweeg de cursor over het scherm om er vertrouwd mee te raken.
41
42  2. Druk de omlaag-toets (j) tot hij repeteert.
43     Nu weet je hoe je de volgende les bereikt.
44
45  3. Gebruik de omlaag-toets om naar les 1.2 te gaan.
46
47  OPMERKING: Als je twijfelt aan wat je tikte, druk <ESC> om in de opdracht-
48             modus te komen. Tik daarna het commando dat bedoeld wordt.
49
50  OPMERKING: Pijltjes-toetsen werken ook. Met de hjkl-toetsen kan je sneller
51             rondbewegen, als je er eenmaal aan gewend bent. Echt waar!
52
53~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54                   Les 1.2: VIM AFSLUITEN
55
56      !! LET OP: Lees deze les goed door voordat je iets uitvoert!!
57
58  1. Druk de <ESC> toets (om zeker in de opdrachtmodus te zitten).
59
60  2. Tik   :q! <ENTER>
61     Hiermee wordt de editor afgesloten. Alle veranderingen gaan VERLOREN.
62
63  3. Nu zie je de shell-prompt. Tik het commando waarmee je deze lessen
64     hebt opgeroepen. Dat is normaal gesproken:  vimtutor <ENTER>
65
66  4. Als je deze stappen goed hebt doorgelezen, voer dan de stappen 1 tot 3
67     uit om de editor te verlaten en weer op te starten.
68
69  LET OP: :q! <ENTER> verwerpt alle veranderingen die je aanbracht. Een paar
70          lessen verder zal je leren hoe veranderingen worden opgeslagen in
71          een bestand.
72
73  5. Beweeg de cursor omlaag naar les 1.3.
74
75~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
76                   Les 1.3: TEKST BEWERKEN - WISSEN
77
78          ** Tik  x  om het teken onder de cursor te wissen. **
79
80  1. Ga met de cursor naar de regel verderop met --->.
81
82  2. Zet de cursor op een teken dat moet worden gewist om een fout te
83     herstellen.
84
85  3. Tik  x  om het ongewenste teken te wissen.
86
87  4. Herhaal deze stappen tot de regel goed is.
88
89  ---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus.
90
91  5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan.
92
93  LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende.
94
95~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96                   Les 1.4: TEKST BEWERKEN - INVOEGEN
97
98              ** Tik  i  ('insert') om tekst in te voegen. **
99
100  1. Ga met de cursor naar de eerste regel verderop met --->.
101
102  2. Maak de eerste regel gelijk aan de tweede. Zet daarvoor de cursor op
103     het karakter waarvoor tekst moet worden ingevoegd.
104
105  3. Tik  i  en daarna de nodige aanvullingen.
106
107  4. Tik <ESC> na elke herstelde fout om terug te keren in de opdrachtmodus.
108     Herhaal de stappen 2 tot 4 om de zin te verbeteren.
109
110  ---> Aan regel ontekt wat .
111  ---> Aan deze regel ontbreekt wat tekst.
112
113  5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst.
114
115~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116                   Les 1.5: TEKST BEWERKEN - TOEVOEGEN
117
118             ** Tik  A  ('append') om tekst toe te voegen. **
119
120  1. Ga met de cursor naar de eerste regel verderop met --->.
121     Het maakt niet uit waar de cursor in deze regel staat.
122
123  2. Tik hoofdletter  A  en tik de nodige aanvullingen.
124
125  3. Tik <ESC> nadat de tekst is aangevuld. Zo keer je terug in de
126     opdrachtmodus.
127
128  4. Ga naar de tweede regel verderop met ---> en herhaal stap 2 en 3
129     om deze zin te corrigeren.
130
131  ---> Er ontbreekt wat tekst aan de
132       Er ontbreekt wat tekst aan deze regel.
133  ---> Hier ontbreekt ook w
134       Hier ontbreekt ook wat tekst.
135
136  5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen
137     van tekst.
138
139~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
140                   Les 1.6: EEN BESTAND EDITTEN
141
142    ** Gebruik  :wq  om een bestand op te slaan en de editor te verlaten. **
143
144  !! LET OP: Lees deze les helemaal door voordat je een van de volgende
145             stappen uitvoert!!
146
147  1. Verlaat deze les zoals je in les 1.2 deed:  :q!
148     Of gebruik een andere terminal als je daar de beschikking over hebt. Doe
149     daar het volgende.
150
151  2. Tik het volgende commando na de shell-prompt:  vim les <ENTER>
152     'vim' (vaak ook 'vi') is het commando om de Vim-editor te starten,
153     'les' is de naam van het bestand, dat je gaat bewerken. Kies een andere
154     naam als er al een bestand 'les' bestaat, dat niet veranderd mag worden.
155
156  3. Voeg naar eigen keus tekst toe, zoals je geleerd hebt in eerdere lessen.
157
158  4. Sla het bestand met de wijzigingen op en verlaat Vim met  :wq <ENTER>
159
160  5. Herstart vimtutor als je deze bij stap 1 hebt verlaten en ga verder met
161     de volgende samenvatting.
162
163  6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen.
164
165~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166                   SAMENVATTING Les 1
167
168  1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen.
169       h (links)   j (omlaag)  k (omhoog)  l (rechts)
170
171  2. Start Vim van de shell-prompt. Tik:  vim BESTANDSNAAM <ENTER>
172
173  3. Sluit Vim af met  <ESC> :q! <ENTER>  om de veranderingen weg te gooien.
174               OF tik  <ESC> :wq <ENTER>  om de veranderingen te bewaren.
175
176  4. Wis het teken onder de cursor met:  x
177
178  5. Invoegen of toevoegen van tekst, tik:
179     i  en daarna de in te voegen tekst  <ESC>   voeg in vanaf de cursor
180     A  en daarna de toe te voegen tekst  <ESC>  voeg toe achter de regel
181
182  OPMERKING: Met <ESC> kom je terug in opdrachtmodus en wordt een ongewenst
183             of gedeeltelijk uitgevoerd commando afgebroken.
184
185  Ga nu verder met les 2.1.
186
187~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
188                   Les 2.1: WIS-COMMANDO'S
189
190       ** Tik  dw  ('delete word') om een woord te wissen. **
191
192  1. Druk op <ESC> om zeker in de opdrachtmodus te zijn.
193
194  2. Ga naar de regel hieronder, die met ---> begint.
195
196  3. Ga met de cursor naar het begin van een woord dat moet worden gewist.
197
198  4. Met het tikken van  dw  verdwijnt het woord.
199
200  OPMERKING: De letter  d  verschijnt op de laatste regel van het scherm
201             zodra je hem tikt. Vim is aan het wachten tot je de  w  tikt.
202             Als je een ander teken dan  d  ziet, heb je iets verkeerds
203             getikt. Druk op <ESC> en begin opnieuw.
204
205  NOG EEN OPMERKING: Dit werkt alleen als de optie 'showcmd' is ingeschakeld.
206                     Dat gebeurt met  :set showcmd <ENTER>
207
208  ---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren.
209
210  5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2.
211
212~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
213                   Les 2.2: MEER WIS-COMMANDO'S
214
215        ** Tik  d$  om te wissen tot het einde van de regel. **
216
217  1. Druk op <ESC> om zeker in de opdrachtmodus te zijn.
218
219  2. Ga naar de regel hieronder, die met ---> begint.
220
221  3. Ga met de cursor naar het einde van de correcte regel (NA de eerste  . ).
222
223  4. Tik  d$  om te wissen tot het einde van de regel.
224
225  ---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt.
226
227  5. Ga naar les 2.3 voor uitleg.
228
229~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
230                   Les 2.3: OVER OPERATOREN EN BEWEGINGEN
231
232  Veel commando's die de tekst veranderen, bestaan uit een operator en een
233  beweging. De samenstelling van een wis-commando met de operator  d  is:
234    d  beweging
235
236  Daarbij is:
237    d        - de wis-operator
238    beweging - het bereik waarop de operator werkt (zie het lijstje hieronder)
239
240  Een korte lijst van bewegingen vanaf de cursor:
241    w - tot het begin van het volgende woord, ZONDER het eerste teken daarvan.
242    e - tot het einde van het huidige woord, INCLUSIEF het laatste teken.
243    $ - tot het einde van de regel, INCLUSIEF het laatste teken.
244
245  Het tikken van  de  wist tekst vanaf de cursor tot het eind van het woord.
246
247  OPMERKING: Het intikken van alleen maar de beweging, zonder een operator,
248             in de opdrachtmodus beweegt de cursor (respectievelijk naar het
249             volgende woord, naar het eind van het huidige woord en naar het
250             eind van de regel).
251
252~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
253                   Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING
254
255   ** Een getal voor een beweging herhaalt het zoveel keer. **
256
257  1. Ga naar de regel hieronder, die met ---> begint.
258
259  2. Tik  2w  zodat de cursor twee woorden vooruit gaat.
260
261  3. Tik  3e  zodat de cursor naar het einde van het derde woord gaat.
262
263  4. Tik  0  (nul) om naar het begin van de regel te gaan.
264
265  5. Herhaal de stappen 2 en 3 met andere getallen.
266
267  ---> Dit is een regel met woorden waarin je heen en weer kan bewegen.
268
269  6. Ga verder met les 2.5.
270
271~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
272                   Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN
273
274  ** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. **
275
276  Bij de combinatie van wis-operator en beweging kan je voor de beweging een
277  teller zetten om meer te wissen:
278         d  [teller]  beweging
279
280  1. Ga naar het eerste woord in HOOFDLETTERS in de regel na --->.
281
282  2. Met  d2w  worden twee woorden (in dit voorbeeld in hoofdletters) gewist.
283
284  3. Herhaal de stappen 1 en 2 met verschillende tellers om de verschillende
285     woorden in hoofdletters met ��n commando te wissen.
286
287  ---> deze ABC DE regel FGHI JK LMN OP is QZ RS ontdaan van rommel.
288
289  OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei.
290
291~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
292                   Les 2.6: BEWERKING VAN HELE REGELS
293
294               ** Tik  dd  om een hele regel te wissen. **
295
296  Omdat het wissen van een hele regel vaak voorkomt, besloten de ontwerpers
297  van Vi dat met het tikken van  dd  simpelweg een hele regel gewist wordt.
298
299  1. Ga met de cursor naar de tweede regel van de zinnetjes hieronder.
300
301  2. Tik  dd  om de regel te wissen.
302
303  3. Ga nu naar de vierde regel.
304
305  4. Tik  2dd  om twee regels te wissen.
306
307  --->  1)  Rozen zijn rood.
308  --->  2)  Modder is leuk.
309  --->  3)  Viooltjes zijn blauw.
310  --->  4)  Ik heb een auto.
311  --->  5)  De klok slaat de tijd.
312  --->  6)  Suiker is zoet.
313  --->  7)  En dat ben jij ook.
314
315~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
316                   Les 2.7: HET COMMANDO HERSTEL
317
318  ** u  maakt het laatste commando ongedaan,  U  herstelt een hele regel. **
319
320  1. Ga met de cursor naar de regel hieronder met ---> en zet hem
321     op de eerste fout.
322
323  2. Tik  x  om het eerste ongewenste teken te wissen.
324
325  3. Tik nu  u  en maak daarmee het vorige commando ongedaan.
326
327  4. Herstel nu alle fouten in de regel met het  x  commando.
328
329  5. Tik een hoofdletter  U  om de regel in z'n oorspronkelijke staat terug
330     te brengen.
331
332  6. Tik nu een paar keer  u  en herstel daarmee de  U  en eerdere commando's.
333
334  7. Tik nu een paar keer CTRL-R (Ctrl-toets ingedrukt houden en R tikken) en
335     voer daarmee de commando's opnieuw uit: 'redo' oftewel 'undo de undo's'.
336
337  ---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo.
338
339  8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2.
340
341~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
342                   SAMENVATTING Les 2
343
344  1. Wis van de cursor tot het volgende woord met    dw
345
346  2. Wis van de cursor tot het eind van de regel met d$
347
348  3. Wis de hele regel met                           dd
349
350  4. Herhaal een beweging door er een getal voor te zetten:  2w
351
352  5. De opbouw van een wijzigingscommando is:
353       operator  [getal]  beweging
354     daarbij is:
355       operator - wat er moet gebeuren, bijvoorbeeld  d  om te wissen
356       [getal]  - een (niet-verplichte) teller om 'beweging' te herhalen
357       beweging - een beweging door de te wijzigen tekst zoals w (woord)
358                  of $ (tot het einde van de regel) enz.
359
360  6. Ga naar het begin van de regel met nul:  0
361
362  7. Undo de voorgaande actie met              u (kleine letter)
363     Undo alle veranderingen in een regel met  U (hoofdletter)
364     Undo de undo's met                        CTRL-R
365
366~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
367                   Les 3.1: HET COMMANDO PLAK
368
369  ** Tik  p  ('put') en plak daarmee zojuist gewiste tekst na te cursor. **
370
371  1. Ga met de cursor naar de eerste regel met ---> hierna.
372
373  2. Wis de regel met  dd  en bewaar hem zodoende in een Vim-register.
374
375  3. Ga naar de c-regel, waar de gewiste regel ONDER moet komen.
376
377  4. Tik  p  om de regel terug te zetten onder de regel met de cursor.
378
379  5. Herhaal de stappen 2 tot 4 om de regels in de goede volgorde te zetten.
380
381---> d) Krijg je het ook onder de knie?
382---> b) Viooltjes zijn blauw,
383---> c) Begrip is te leren,
384---> a) Rozen zijn rood,
385
386~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
387                   Les 3.2: HET COMMANDO VERVANG
388
389  ** Tik rx ('replace') om het teken onder de cursor te vervangen door x. **
390
391  1. Ga naar de eerste regel hieronder met --->.
392
393  2. Zet de cursor op de eerste fout.
394
395  3. Tik  r  en dan het teken dat er hoort te staan.
396
397  4. Herhaal de stappen 2 en 3 tot de eerste regel gelijk is aan de tweede.
398
399  --->  Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt.
400  --->  Bij het tikken van deze regel heeft iemand verkeerde letters getikt.
401
402  5. Ga nu naar les 3.3.
403
404  LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren.
405
406~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
407                   Les 3.3: HET COMMANDO VERANDER
408
409     ** Tik  ce  om te veranderen tot het einde van een woord. **
410
411  1. Ga met de cursor naar de eerste regel hieronder met --->.
412
413  2. Zet de cursor op de  u  van ruch.
414
415  3. Tik  ce  en de juiste letters (in dit geval "egel").
416
417  4. Druk <ESC> en ga naar het volgende teken dat moet worden veranderd.
418
419  5. Herhaal de stappen 3 en 4 tot de eerste regel gelijk is aan de tweede.
420
421  ---> In deze ruch staan een paar weedrim die veranderd moud worden.
422  ---> In deze regel staan een paar woorden die veranderd moeten worden.
423
424  LET OP: Met  ce  wordt (het laatste deel van) een woord gewist en kom je
425          in de invoegmodus.
426
427~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
428                   Les 3.4: MEER VERANDERINGEN MET c
429
430  1. Het commando verander ('change') werkt op dezelfde manier als wis. De
431     opbouw is:
432         c  [teller]  beweging
433
434  2. De bewegingen zijn hetzelfde, zoals  w  (woord) en  $  (einde regel).
435
436  3. Ga naar de eerste regel hieronder met --->.
437
438  4. Zet de cursor op de eerste fout.
439
440  5. Tik  c$  en tik de rest van de regel zodat hij gelijk wordt aan de
441     tweede en sluit af met <ESC>.
442
443  ---> Het einde van deze regel moet precies zo worden als de tweede regel.
444  ---> Het einde van deze regel moet gecorrigeerd worden met het commando c$.
445
446  OPMERKING: Je kan de toets <BACKSPACE> gebruiken om tikfouten te herstellen.
447
448~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
449                   SAMENVATTING Les 3
450
451  1. Tik  p  om tekst terug te plakken, die zojuist is gewist. Dit zet de
452     gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze
453     op de regel ONDER de cursor.
454
455  2. Het teken waarop de cursor staat wordt vervangen met  r  gevolgd door
456     het teken dat je daar wilt hebben.
457
458  3. Het commando 'verander' stelt je in staat om tekst te veranderen vanaf
459     de cursor tot waar de 'beweging' je brengt. Dat wil zeggen: tik  ce  om
460     te veranderen vanaf de cursor tot het einde van het woord,  c$  om te
461     veranderen tot het einde van de regel.
462
463  4. De opbouw van het commando verander is:
464         c  [teller]  beweging
465
466  Ga nu naar de volgende les.
467
468~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
469                   Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND
470
471  ** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van
472     het bestand is. Met [nummer] G  ga je naar een bepaalde regel. **
473
474  LET OP: Lees de hele les voordat je een stap uitvoert!!
475
476  1. Hou de Ctrl-toets ingedrukt en tik  g . Dit noemen we CTRL-G.
477     Onderaan de pagina verschijnt een boodschap met de bestandsnaam en de
478     positie in het bestand. Onthou het regelnummer voor stap 3.
479
480  OPMERKING: Als de optie 'ruler' aan staat, wordt de positie van de cursor
481             (regelnummer, kolom) steeds in de rechter-onderhoek van het
482             scherm vermeld. In dit geval vermeldt CTRL-G geen regelnummer.
483             CTRL-G geeft ook de status aan, namelijk of de tekst veranderd
484             is ('modified') sinds het de laatste keer is opgeslagen.
485
486  2. Tik hoofdletter  G  om naar het einde van het bestand te gaan.
487     Tik  gg  om naar het begin van het bestand te gaan.
488
489  3. Tik het regelnummer waar je bij stap 1 was en daarna  G . Dit brengt je
490     terug naar de regel waar je was toen je de eerste keer CTRL-G tikte.
491
492  4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen.
493
494~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
495                   Les 4.2: HET COMMANDO ZOEKEN
496
497  ** Met  /ZOEK  wordt naar de zoekterm (��n of meer woorden) gezocht. **
498
499  1. Tik in de opdrachtmodus het teken  / . Je ziet dat het met de cursor
500     aan de onderkant van het scherm verschijnt, zoals bij het :-commando.
501
502  2. Tik nu 'ffouut' <ENTER>. Dit is het woord waarnaar gezocht wordt.
503
504  3. Tik  n  om verder te zoeken met dezelfde zoekterm.
505     Zoek met  N  met dezelfde zoekterm in de tegenovergestelde richting.
506
507  4. Zoek in achterwaartse richting met ?zoekterm in plaats van  / .
508
509  5. Keer terug naar de vorige hit met CTRL-O (hou Ctrl-toets ingedrukt en
510     tik letter o). Herhaal om verder terug te gaan. CTRL-I gaat vooruit.
511
512  ---> "ffouut" is niet de juiste spelling van fout, ffouut is een fout.
513
514  OPMERKING: Als zoeken het einde van het bestand bereikt, wordt vanaf het
515             begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld.
516
517~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
518                   Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES
519
520            ** Tik  %  om naar corresponderende ), ] of } te gaan. **
521
522  1. Zet de cursor op een (, [ of { in de regel hieronder met --->.
523
524  2. Tik dan het teken  % .
525
526  3. De cursor gaan naar het overeenkomstige haakje.
527
528  4. Met opnieuw  %  gaat de cursor terug naar het eerste haakje.
529
530  5. Plaats de cursor op een ander haakje en bekijk wat  %  doet.
531
532  ---> Dit ( is een testregel met  ('s, ['s ] en {'s } erin. ))
533
534  OPMERKING: Dit is nuttig bij het debuggen van een programma waarin haakjes
535             niet corresponderen. Met de optie 'showmatch' wordt ook
536             aangegeven of haakjes corresponderen, maar de cursor wordt niet
537             (blijvend) verplaatst.
538
539~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
540                   Les 4.4: HET VERVANG COMMANDO
541
542      ** Tik  :s/oud/nieuw/g  om 'oud' door 'nieuw' te vervangen. **
543
544  1. Ga met de cursor naar de regel hieronder met --->.
545
546  2. Tik  :s/dee/de <ENTER>. Zoals je ziet, vervangt ('substitute') dit
547     commando alleen de eerste "dee" in de regel.
548
549  3. Tik nu  :s/dee/de/g . Met de g-vlag ('global') wordt elke "dee" in de
550     regel vervangen.
551
552  ---> dee beste tijd om dee bloemen te zien is in dee lente.
553
554  4. Om in (een deel van) een tekst elk 'oud' te vervangen door 'nieuw':
555     tik   :#,#s/oud/nieuw/g   waar #,# de regelnummers zijn die het gebied
556                               begrenzen waarin wordt vervangen.
557     tik   :%s/oud/nieuw/g     om alles te vervangen in het hele bestand.
558     tik   :%s/oud/nieuw/gc    om elke 'oud' in het hele bestand te vinden
559                               en te vragen of er vervangen moet worden.
560
561~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
562                   SAMENVATTING Les 4
563
564  1. CTRL-G   laat positie in het bestand zien en de status van het bestand.
565     G        verplaatst je naar het einde van het bestand.
566     nummer G verplaatst je naar regelnummer.
567     gg       verplaatst je naar de eerste regel.
568
569  2. Met  /  en een zoekterm wordt VOORWAARTS gezocht naar de term.
570     Met  ?  en een zoekterm wordt ACHTERWAARTS gezocht naar de term.
571     Tik  n  na een zoekopdracht om de volgende hit te vinden,
572     of tik  N  om in de andere richting te zoeken.
573     CTRL-O  brengt je naar eerdere hit,  CTRL-I naar nieuwere.
574
575  3. Tik  %  terwijl de cursor op een haakje ([{}]) staat, om naar het
576     corresponderende haakje te gaan.
577
578  4. :s/oud/nieuw      vervangt het eerste 'oud' in een regel door 'nieuw'.
579     :s/oud/nieuw/g    vervangt elk 'oud' in een regel door 'nieuw'.
580     :#,#s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' tussen de regelnummers.
581     :%s/oud/nieuw/g    vervangt elk 'oud' door 'nieuw' in het hele bestand.
582     Voeg  c  toe (:%s/oud/nieuw/gc) om elke keer om bevestiging
583     ('confirmation') te vragen.
584
585~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
586                   Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD
587
588     ** Tik  :!  gevolgd door een extern commando om dat uit te voeren. **
589
590  1. Tik het commando  :  waarmee de cursor op de onderste regel van het
591     scherm komt te staan. Nu kan je een opdracht geven via de commando-regel.
592
593  2. Tik een  !  (uitroepteken). Dit stelt je in staat om elk shell-commando
594     uit te voeren.
595
596  3. Tik bijvoorbeeld  ls  na het uitroepteken en daarna <ENTER>. Hiermee
597     krijg je de inhoud van je map te zien, net alsof je de opdracht gaf
598     vanaf de shell-prompt. Probeer  :!dir  als het niet werkt.
599
600  OPMERKING: Elk extern commando kan op deze manier uitgevoerd worden, ook
601             met argumenten.
602
603  OPMERKING: Alle commando's na  :  moeten worden afgesloten met <ENTER>.
604             Vanaf nu zullen we dat niet meer altijd vermelden.
605
606~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
607                   Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN
608
609     ** Tik :w BESTANDSNAAM om de tekst m�t veranderingen op te slaan. **
610
611  1. Tik  :!dir  of  :!ls  om de inhoud van je map te tonen. Je weet
612     inmiddels dat je daarna een <ENTER> moet tikken.
613
614  2. Kies een bestandsnaam die nog niet bestaat, bijvoorbeeld TEST.
615
616  3. Tik nu:  :w TEST  (als je de naam TEST hebt gekozen).
617
618  4. Hierdoor wordt het hele bestand (de VIM lessen) opgeslagen onder de
619     naam TEST. Tik weer  :!dir  of  :!ls  om dit te controleren.
620
621  OPMERKING: Als je Vim zou verlaten en opnieuw zou starten met  vim TEST  is
622             het bestand een exacte kopie van de lessen, zoals je ze opsloeg.
623
624  5. Wis het bestand nu met de opdracht (MS-DOS)  :!del TEST
625                                       of (Unix)  :!rm TEST
626
627~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
628                   Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN
629
630     ** Sla een deel van het bestand op met  v beweging :w BESTANDSNAAM **
631
632  1. Ga naar deze regel.
633
634  2. Tik  v  en ga met de cursor naar stap 5 hieronder. Je ziet dat de
635     tekst oplicht.
636
637  3. Tik  : . Onderaan het scherm zal  :'<,'>  verschijnen.
638
639  4. Tik  w TEST  , waar TEST een bestandsnaam is, die nog niet bestaat.
640     Controleer dat je  :'<,'>w TEST  ziet staan voordat je <ENTER> tikt.
641
642  5. Vim slaat nu de geselecteerde regels op in het bestand TEST. Met
643     :!dir  of  !ls  kan je dat zien. Wis het nog niet! We zullen het in
644     de volgende les gebruiken.
645
646  OPMERKING: Het tikken van  v  zet zichtbare modus ('visual selection') aan.
647             Je kan de cursor rondbewegen om de selectie groter of kleiner
648             te maken. Vervolgens kan je een commando gebruiken om iets met
649             de tekst te doen. Met  d  bijvoorbeeld wis je de tekst.
650
651~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
652                   Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN
653
654     ** Tik  :r BESTANDSNAAM om de inhoud van een bestand in te voegen. **
655
656  1. Zet de cursor precies boven deze regel.
657
658  OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol
659             daarna naar beneden om deze les weer te zien.
660
661  2. Haal nu het bestand TEST op met het commando  :r TEST .
662     Het bestand dat je ophaalt komt onder de regel waarin de cursor staat.
663
664  3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog.
665     Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit
666     het bestand.
667
668  OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een
669             voorbeeld te geven:  :r !ls  leest de uitvoer van het commando
670             ls en zet dat onder de regel waarin de cursor staat.
671
672~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
673                   SAMENVATTING Les 5
674
675  1. :!COMMANDO  voert een extern commando uit.
676     Enkele bruikbare voorbeelden zijn:
677        (MS-DOS)         (Unix)
678         :!dir            :!ls          - laat de inhoud van een map zien
679         :!del BESTAND    :!rm BESTAND  - wist bestand BESTAND
680
681  2. :w BESTANDSNAAM  schrijft het huidige Vim-bestand naar disk met de
682     naam BESTANDSNAAM.
683
684  3. v beweging :w BESTANDSNAAM  laat je in zichtbare modus een fragment
685     selecteren, dat wordt opgeslagen in het bestand BESTANDSNAAM.
686
687  4. :r BESTANDSNAAM  haalt het bestand BESTANDSNAAM op en voegt het onder
688     de cursor-positie in de tekst in.
689
690  5. :r !dir  leest de uitvoer van het externe commando dir en zet het onder
691     de cursor-positie.
692
693~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
694                   Les 6.1: HET COMMANDO OPEN
695
696     ** Tik  o  om een regel onder de cursor te openen in invoegmodus. **
697
698  1. Ga naar de eerste regel beneden met --->.
699
700  2. Tik de kleine letter  o  en open daarmee een regel ONDER de cursor en
701     ga naar de invoegmodus.
702
703  3. Tik wat tekst in en sluit af met <ESC> om de invoegmodus te verlaten.
704
705  ---> Als je  o  tikt, komt de cursor in een nieuwe regel in invoegmodus.
706
707  4. Om een regel BOVEN de cursor te openen, moet je gewoon een hoofdletter
708     O  tikken in plaats van een kleine letter. Probeer dat vanaf de volgende
709     regel.
710
711  ---> Open een regel hierboven. Tik een O terwijl de cursor hier staat.
712
713~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
714                   Les 6.2: HET COMMANDO TOEVOEGEN
715
716        ** Tik  a  om tekst toe te voegen ACHTER de cursor. **
717
718  1. Ga naar het begin van de regel beneden met --->.
719
720  2. Tik  e  tot de cursor op het einde van  "ste"  staat.
721
722  3. Tik een (kleine letter)  a  ('append') om toe te voegen ACHTER de cursor.
723
724  4. Vul het woord aan zoals in de volgende regel. Druk <ESC> om de
725     invoegmodus te verlaten.
726
727  5. Ga met  e  naar het einde van het volgende onvolledige woord en herhaal
728     de stappen 3 en 4.
729
730  ---> Deze regel ste je in staat om te oef in het toevo van tekst.
731       Deze regel stelt je in staat om te oefenen in het toevoegen van tekst.
732
733  OPMERKING: a, i en A openen allemaal dezelfde invoegmodus, het enige
734             verschil is waar tekens worden ingevoegd.
735
736~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
737                   Les 6.3: VERVANGEN OP EEN ANDERE MANIER
738
739      ** Tik een hoofdletter  R  om meer dan ��n teken te vervangen. **
740
741  1. Ga naar de eerste regel beneden met --->. Ga met de cursor naar het
742     begin van de eerste  "xxx" .
743
744  2. Tik nu  R  en daarna het getal eronder in de tweede regel, zodat  xxx
745     wordt vervangen.
746
747  3. Druk <ESC> om de vervangmodus te verlaten. Je ziet dat de rest van de
748     regel ongewijzigd blijft.
749
750  4. Herhaal de stappen om de overgebleven  xxx  te vervangen.
751
752  ---> Optellen van 123 en xxx geeft je xxx.
753  ---> Optellen van 123 en 456 geeft je 579.
754
755  OPMERKING: Vervangmodus lijkt op invoegmodus, maar elk teken dat je tikt,
756             vervangt een bestaand teken.
757
758~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
759                   Les 6.4: TEKST KOPI�REN EN PLAKKEN
760
761        ** Gebruik  y  om tekst te kopi�ren en  p  om te plakken. **
762
763  1. Ga naar de regel beneden met ---> en zet de cursor achter "a)".
764
765  2. Zet zichtbare modus aan met  v  en zet de cursor juist voor "eerste".
766
767  3. Tik  y  ('yank') om de opgelichte tekst ("dit is het") te kopi�ren.
768
769  4. Ga met  j$  met de cursor naar het einde van de volgende regel.
770
771  5. Plak de gekopieerde tekst met  p  en tik  a tweede <ESC>.
772
773  6. Selecteer in zichtbare modus "onderdeel", kopieer het met  y  en
774     ga met  j$  naar het einde van de tweede regel. Plak de tekst daar
775     met  p .
776
777  --->  a) dit is het eerste onderdeel
778        b)
779
780  OPMERKING: Je kan  y  ook als operator gebruiken;  yw  kopieert een woord,
781             yy  een hele regel.
782
783~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
784                   Les 6.5: OPTIES GEBRUIKEN
785
786     ** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. **
787
788  1. Zoek naar 'hoofdlettergevoelig' met  /hoofdlettergevoelig <ENTER>
789     Herhaal het zoeken enkele keren door  n  te tikken.
790
791  2. Schakel de optie 'ic' ('ignore case', niet-hoofdlettergevoelig) in
792     met  :set ic
793
794  3. Zoek met  n  opnieuw naar 'hoofdlettergevoelig'. Je ziet dat
795     Hoofdlettergevoelig en HOOFDLETTERGEVOELIG nu ook gevonden worden.
796
797  4. Schakel de opties 'hlsearch' (treffers oplichten) en 'incsearch' (toon
798     gedeeltelijke treffers bij intikken) in met  :set hls is
799
800  5. Tik weer /hoofdlettergevoelig <ENTER> en kijk wat er gebeurt.
801
802  6. Schakel 'hoofdlettergevoelig' weer in met  :set noic
803
804  OPMERKING: Schakel het oplichten van treffers uit met  :nohlsearch
805
806  OPMERKING: Om bij een enkel zoek-commando de hoofdlettergevoeligheid om
807             te draaien kan  \c  worden gebruikt na de zoekterm:
808             /hoofdlettergevoelig\c <ENTER>.
809
810~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
811                   SAMENVATTING Les 6
812
813  1. Tik  o  om een regel te openen ONDER de cursor en invoegmodus te starten.
814     Tik  O  om een regel te openen BOVEN de cursor.
815
816  2. Tik  a  om tekst toe te voegen NA de cursor.
817     Tik  A  om tekst toe te voegen aan het einde van de regel.
818
819  3. Het commando  e  beweegt de cursor naar het einde van een woord.
820
821  4. De operator  y  yankt (kopieert) tekst,  p  zet het terug (plakt).
822
823  5. Met hoofdletter  R  wordt de vervangmodus geopend, met <ESC> afgesloten.
824
825  6. Met  :set xxx  wordt optie 'xxx' ingeschakeld. Opties zijn bijvoorbeeld:
826       ic   ignorecase  geen verschil hoofdletters/kleine letters bij zoeken
827       is   incsearch   toon gedeeltelijke treffers tijdens intikken zoekterm
828       hls  hlsearch    laat alle treffers oplichten
829     Je kan zowel de lange als de korte naam van een optie gebruiken.
830
831  7. Zet 'no' voor de naam om een optie uit te schakelen:  :set noic
832     schakelt 'ic' uit.
833
834~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
835                   Les 7.1: HULP INROEPEN
836
837           ** Het gebruik van ingebouwde hulp. **
838
839  Vim heeft een uitgebreid ingebouwd hulpsysteem. Probeer, om te beginnen,
840  ��n van deze drie:
841    - druk de <HELP> toets (als je die hebt)
842    - druk de <F1> toets (als je die hebt)
843    - tik  :help <ENTER>
844
845  Lees de tekst in het help-venster om te leren hoe 'help' werkt.
846  Tik  CTRL-W CTRL-W  om van het ene venster naar het andere te gaan.
847  Met  :q <ENTER>  wordt het help-venster gesloten.
848
849  Je kan hulp vinden over nagenoeg elk onderwerp door een argument aan het
850  commando  :help  toe te voegen. Probeer deze (en vergeet <ENTER> niet):
851    :help w
852    :help c_CTRL-D
853    :help insert-index
854    :help user-manual
855
856~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
857                   Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND
858
859                    ** Mogelijkheden van Vim uitbreiden. **
860
861  Vim kent veel meer mogelijkheden dan Vi, maar de meeste zijn standaard
862  uitgeschakeld. Om meer functies te gebruiken moet je een 'vimrc'-bestand
863  schrijven.
864
865  1. Bewerk het bestand 'vimrc'. Hoe dat moet hangt af van je systeem:
866      :e ~/.vimrc		voor Unix
867      :e ~/_vimrc		voor MS-Windows
868
869  2. Lees de inhoud van het voorbeeld-bestand:
870      :r $VIMRUNTIME/vimrc_example.vim
871
872  3. Sla het bestand op met  :w
873
874  De volgende keer dat je Vim start wordt 'syntaxiskleuring' gebruiken.
875  Je kan al je voorkeursinstellingen toevoegen aan dit 'vimrc'-bestand.
876  Tik  :help vimrc-intro  voor meer informatie.
877
878~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
879                   Les 7.3: AANVULLEN
880
881      ** Aanvullen van de 'command line' met CTRL-D en <TAB>. **
882
883  1. Zorg dat Vim niet in 'compatible mode' is met  :set nocp
884
885  2. Kijk welke bestanden zich in de map bevinden met  :!ls  of  :!dir
886
887  3. Tik het begin van een commando:  :e
888
889  4. Met  CTRL-D  toont Vim een lijst commando's, die met "e" beginnen.
890
891  5. Druk enkele keren <TAB>. Vim laat aanvullingen zien, zoals ":edit",
892     dat we hier gebruiken.
893
894  6. Voeg een spatie toe en de eerste letter(s) van een bestaande
895     bestandsnaam:  :edit BESTAND
896
897  7. Druk <TAB>. Vim vult de naam aan (als hij uniek is).
898
899  OPMERKING: Aanvullen werkt bij tal van commando's. Probeer gewoon CTRL-D
900             en <TAB>. Het is bijzonder nuttig bij  :help .
901
902~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
903                   SAMENVATTING Les 7
904
905  1. Tik  :help  of druk <F1> of <Help>  om een help-venster te openen.
906
907  2. Tik  :help CMD  voor hulp over  CMD .
908
909  3. Tik  CTRL-W CTRL-W  om naar een ander venster te gaan.
910
911  4. Tik  :q  om het help-venster te sluiten.
912
913  5. Maak een bestand met de naam 'vimrc' voor je voorkeursinstellingen.
914
915  6. Druk CTRL-D tijdens het intikken van een :-commando om mogelijke
916     aanvullingen te zien. Druk <TAB> om aanvullen te gebruiken.
917
918~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
919  Hiermee komen de Vim-lessen tot een einde. Ze waren bedoeld om een kort
920  overzicht te geven van de Vim-editor, juist voldoende om de editor
921  redelijk makkelijk te gebruiken. Deze lessen zijn verre van volledig. Vim
922  kent veel meer commando's. Lees hierna de handleiding voor gebruikers:
923  ":help user-manual".
924
925  Voor verdere studie wordt aanbevolen:
926      Vim - Vi Improved - door Steve Oualline
927      Uitgever: New Riders
928  Dit is het eerste boek dat geheel aan Vim is gewijd. Speciaal geschikt
929  voor beginners. Met veel voorbeelden en afbeeldingen.
930  Zie http://iccf-holland.org/click5.html
931
932  Het volgende boek is ouder en gaat meer over Vi dan Vim, maar het wordt
933  toch aanbevolen:
934      Learning the Vi Editor - door Linda Lamb
935      Uitgever: O'Reilly & Associates Inc.
936  Het is een goed boek om nagenoeg alles te weten te komen dat je met Vi
937  zou willen doen. De zesde en vooral de nieuwe zevende druk (onder de
938  titel Learning the Vi and Vim Editors door Arnold Robbins, Elbert Hannah
939  & Linda Lamb) bevat ook informatie over Vim.
940
941  Deze lessen zijn geschreven door Michael C. Pierce en Robert K. Ware,
942  Colorado School of Mines met gebruikmaking van idee�n van Charles Smith
943  van de Colorado State University. E-mail: [email protected].
944
945  Aangepast voor Vim door Bram Moolenaar.
946
947  Nederlandse vertaling door Rob Bishoff, april 2012
948  e-mail: [email protected])
949
950~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
951