File: tutor1.da

package info (click to toggle)
vim 2%3A9.1.1230-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 88,180 kB
  • sloc: ansic: 416,989; cpp: 6,324; makefile: 4,448; java: 2,226; sh: 1,861; perl: 1,419; python: 960; awk: 730; lisp: 501; cs: 458; objc: 369; xml: 247; sed: 8; csh: 6
file content (972 lines) | stat: -rw-r--r-- 34,750 bytes parent folder | download
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
===============================================================================
= V e l k o m m e n   t i l   V I M - v e j l e d n i n g e n  -  Version 1.7 =
===============================================================================

     Vim er en meget kraftfuld editor med mange kommandoer, for mange til
     at forklare i en vejledning som denne. Vejledningen er designet til at
     beskrive nok af kommandoerne til at du vil vre i stand til let at bruge
     Vim som en alsidig editor.

     Det tager cirka 25-30 minutter at fuldfre vejledningen,
     afhngig af hvor meget tid der bruges p at eksperimentere.

     VR OPMRKSOM P AT:
     Kommandoerne i lektionerne ndrer teksten. Opret en kopi af filen
     til at ve p (hvis du startede "vimtutor", s er det allerede en kopi).

     Det er vigtigt at huske p at vejledningen er sat op til at lre ved at
     bruge. Det betyder at du skal udfre kommandoerne for at lre at bruge
     dem ordentligt. Lser du kun teksten, s glemmer du kommandoerne!

     Srg for at din Caps-Lock-tast IKKE er aktiveret og tryk
     p   j-tasten   nok gange til at flytte markren s lektion 1.1
     fylder hele skrmen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			Lektion 1.1.1: FLYT MARKREN


   ** Tryk p h-,j-,k-,l-tasterne som vist, for at flytte markren. **
	     ^
	     k		    Fif: H-tasten er til venstre og flytter til venstre.
       < h	 l >		 L-tasten er til hjre og flytter til hjre.
	     j			 J-tasten ligner en ned-pil.
	     v
  1. Flyt markren rundt p skrmen indtil du er fortrolig med det.

  2. Hold ned-tasten (j) nede, indtil den gentager.
     Nu ved du hvordan du flytter til den nste lektion.

  3. Brug ned-tasten til at flytte til lektion 1.2.

BEMRK: Hvis du nogensinde bliver i tvivl om noget du skrev, s tryk p <ESC>
        for at stille dig i normal tilstand. Skriv s kommandoen igen.

BEMRK: Piletasterne br ogs virke. Men med hjkl kan du flytte rundt
        meget hurtigere, nr du har vnnet dig til det. Serist!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			      Lektion 1.1.2: AFSLUT VIM


  !! BEMRK: Ls hele lektionen, inden trinnene nedenfor udfres!!

  1. Tryk p <ESC>-tasten (for at vre sikker p, at du er i normal tilstand).

  2. Skriv:	:q! <ENTER>.
     Det afslutter editoren, hvorved ndringer som du har foretaget forkastes.

  3. Vend tilbage hertil ved at udfre kommandoen som fik dig ind i
     vejledningen. Det var muligvis:  vimtutor <ENTER>

  4. Hvis du har lrt trinnene udenad og er klar, s udfr trin
     1 til 3 for at afslutte og komme ind i editoren igen.

BEMRK: :q! <ENTER>  forkaster ndringer som du har foretaget. Om f lektioner
        vil du lre at gemme ndringerne til en fil.

  5. Flyt markren ned til lektion 1.3.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		       Lektion 1.1.3: TEKSTREDIGERING - SLET


	   ** Tryk p  x  for at slette tegnet som markren er ovenp. **

  1. Flyt markren ned til linjen med --->.

  2. Ret fejlene ved at flytte markren indtil den er ovenp
     tegnet som skal slettes.

  3. Tryk p	x-tasten  for at slette det unskede tegn.

  4. Gentag trin 2 til 4 indtil stningen er korrekt.

---> Kkoen sprangg ovverr mnen.

  5. G videre til lektion 1.4, nu hvor linjen er korrekt.

BEMRK: Efterhnden som du gennemgr vejledningen, s lr det ikke udenad,
        lr det ved at gre det.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		      Lektion 1.1.4: TEKSTREDIGERING - INDST


			** Tryk p  i  for at indstte tekst. **

  1. Flyt markren ned til den frste linje med --->.

  2. For at gre den frste linje magen til den anden, skal markren flyttes
     ovenp det frst tegn EFTER der hvor teksten skal indsttes.

  3. Tryk p  i  og skriv de ndvendige tilfjelser.

  4. Efterhnden som hver fejl rettes, s tryk p <ESC> for at vende tilbage
     til normal tilstand. Gentag trin 2 til 4 for at rette stningen.

---> Der mangler tekst dene .
---> Der mangler noget tekst p denne linje.

  5. Nr du fortrolig med at indstte tekst, s flyt til lektion 1.5.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		     Lektion 1.1.5: TEKSTREDIGERING - VEDHFT


			** Tryk p  A  for at vedhfte tekst. **

  1. Flyt markren ned til den frste linje med --->.
     Det er lige meget hvilket tegn markren er p, p linjen.

  2. Tryk p  A  og skriv de ndvendige tilfjelser.

  3. Tryk p <ESC> nr teksten er blevet vedhftet for at vende tilbage til normal tilstand.

  4. Flyt markren til den anden linje med ---> og gentag
     trin 2 og 3 for at rette stningen.

---> Der mangler noget tekst p den
     Der mangler noget tekst p denne linje.
---> Der mangler ogs noget tek
     Der mangler ogs noget tekst her.

  5. Nr du er fortrolig med at vedhfte tekst, s flyt til lektion 1.6.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		         Lektion 1.1.6: REDIGER EN FIL

		    ** Brug  :wq  til at gemme en fil og afslutte. **

  !! BEMRK: Ls hele lektionen, inden trinnene nedenfor udfres!!

  1. Afslut vejledningen som du gjorde i lektion 1.1.2:  :q!
     Eller gr flgende i en anden terminal, hvis du har adgang til en.

  2. Skriv denne kommando i skalprompten:  vim tutor <ENTER>
     'vim' er kommandoen til at starte Vim-editoren, 'tutor' er navnet p
     filen som du vil redigere. Brug en fil som kan ndres.

  3. Indst og slet tekst, som du lrte vi de forrige lektioner.

  4. Gem filen med ndringer og afslut Vim med:  :wq  <ENTER>

  5. Hvis du afsluttede vimtutor i trin 1, s genstart vimtutor og flyt ned
     til flgende opsummering.

  6. Udfr trinnene ovenfor, nr du har lst og forstet dem.
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			         Lektion 1 OPSUMMERING


  1. Markren flyttes enten med piletasterne eller hjkl-tasterne.
	 h (venstre)	j (ned)       k (op)	    l (hjre)

  2. Vim startes fra skalprompten, ved at skrive:  vim FILNAVN <ENTER>

  3. Vim afsluttes, ved at skrive:	   <ESC>   :q!	 <ENTER>  for at forkaste alle ndringer.
	     ELLER, ved at skrive:	   <ESC>   :wq	 <ENTER>  for at gemme ndringerne.

  4. Slet tegn ved markren, ved at skrive:  x

  5. Indst eller vedhft tekst, ved at skrive:
	 i   skriv indsat tekst       <ESC>		indst inden markren
	 A   skriv vedhftet tekst    <ESC>		vedhft efter linjen

BEMRK: Nr der trykkes p <ESC>, s stilles du i normal tilstand eller ogs
        annulleres en unsket og delvist fuldfrt kommando.

Fortst nu med lektion 2.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			Lektion 1.2.1: SLETTEKOMMANDOER


		       ** Skriv  dw  for at slette et ord. **

  1. Tryk p  <ESC>  for at vre sikker p, at du er i normal tilstand.

  2. Flyt markren ned til linjen med --->.

  3. Flyt markren til begyndelsen af et ord som skal slettes.

  4. Skriv   dw	 for at f ordet til at forsvinde.

  BEMRK: Bogstavet  d  vises p den sidste linje p den skrm du skrev
		det p. Vim venter p at du skriver  w . Hvis du ser et andet tegn
		end  d  , s skrev du forkert; tryk p  <ESC>  og start forfra.

---> Der er regnorm nogle ord som sjovt ikke hrer til papir i stningen.

  5. Gentag trin 3 og 4 indtil stningen er korrekt og g til lektion 2.2.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		       Lektion 1.2.2: FLERE SLETTEKOMMANDOER


	   ** Skriv  d$	for at slette til slutningen af linjen. **

  1. Tryk p  <ESC>  for at vre sikker p, at du er i normal tilstand.

  2. Flyt markren ned til linjen med --->.

  3. Flyt markren til slutningen af den rette linje (EFTER det frste . ).

  4. Skriv    d$    for at slette til slutningen af linjen.

---> Nogen skrev slutningen af linjen to gange. slutningen af linjen to gange.


  5. Flyt videre til lektion 2.3 for at forst hvad der sker.





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		     Lektion 1.2.3: OM OPERATORER OG BEVGELSER


  Mange kommandoer som ndre tekst skabes fra en operator og en bevgelse.
  Formatet til en slettekommando med sletteoperatoren  d  er som flger:

  	d   bevgelse

  Hvor:
    d         - er sletteoperatoren.
    bevgelse - er hvad operatoren skal arbejde p (oplistet nedenfor).

  En kort liste over bevgelser:
    w - indtil begyndelsen af det nste ord, EKSKLUSIV dets frste tegn.
    e - til slutningen af det nuvrende ord, INKLUSIV det sidste tegn.
    $ - til slutningen af linjen, INKLUSIV det sidste tegn.

  S nr der skrives  de  s slettes der fra markren til slutningen af ordet.

BEMRK: Nr kun bevgelsen trykkes i normal tilstand, uden en operator,
        s flyttes markren som angivet.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		    Lektion 1.2.4: BRUG TLLER TIL EN BEVGELSE


   ** Nr der skrives et nummer inden en bevgelse, s gentages den det antal gange. **

  1. Flyt markren ned til begyndelsen af linjen med --->.

  2. Skriv  2w  for at flytte markren fremad to ord.

  3. Skriv  3e  for at flytte markren fremad til slutningen af det tredje ord.

  4. Skriv  0  (nul) for at flytte til begyndelsen af linjen.

  5. Gentag trin 2 og 3 med forskellige numre.

---> Dette er blot en linje med ord som du kan flytte rundt i.

  6. Flyt videre til lektion 2.5.




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		   Lektion 1.2.5: BRUG TLLER TIL AT SLETTE FLERE


   ** Nr der skrives et nummer med en operator, s gentages den det antal gange. **

  I kombinationen med sletteoperatoren og en bevgelse nvnt ovenfor kan du
  indstte en tller inden bevgelsen for at slette flere:
	 d   nummer   bevgelse

  1. Flyt markren til det frste ord MED STORT p linjen med --->.

  2. Skriv  d2w  for at slette de to ord MED STORT

  3. Gentag trin 1 og 2 med en anden tller for at slette de efterflgende
     ord MED STORT med n kommando

--->  denne ABC DE linje FGHI JK LMN OP med ord er Q RS TUV renset.





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 Lektion 1.2.6: ARBEJD P LINJER


		   ** Skriv  dd   for at slette en hel linje. **

  Pga. at sletning af linjer bruges s ofte, s besluttede designerne af Vi
  at det ville vre lettere bare at skrive to d'er for at slette en linje.

  1. Flyt markren til den anden linje i frasen nedenfor.
  2. Skriv  dd  for at slette linjen.
  3. Flyt nu til den fjerde linje.
  4. Skriv   2dd   for at slette to linjer.

--->  1)  Roser er rde,
--->  2)  Mudder er sjovt,
--->  3)  Violer er bl,
--->  4)  Jeg har en scooter,
--->  5)  Ure viser tiden,
--->  6)  Sukker er sdt
--->  7)  Og du er lige s.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 Lektion 1.2.7: FORTRYD-KOMMANDOEN


   ** Tryk p  u	for at fortryde de sidste kommandoer,   U  for at rette en hel linje. **

  1. Flyt markren ned til linjen med ---> og placer den p
     den frste fejl.
  2. Skriv  x  for at slette det frste unskede tegn.
  3. Skriv nu  u  for at fortryde den sidste kommando der blev udfrt.
  4. Ret denne gang alle fejlene p linjen med   x-kommadoen.
  5. Skriv nu et stort  U  for at f linjen tilbage til dens oprindelige tilstand.
  6. Skriv nu  u  nogle f gange for at fortryde  U'et  og forudgende kommandoer.
  7. Skriv nu CTRL-R (hold CTRL-tasten nede mens der trykkes p R) nogle f gange
     for at omgre kommandoerne (fortryd fortrydelserne).

---> Rett fejlene pp liinjen og errstat dem meed fortryd.

  8. Det er meget nyttige kommandoer. Flyt nu til lektion 2 opsummering.




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			         Lektion 2 OPSUMMERING


  1. Slet fra markren op til det nste ord, ved at skrive:    dw
  2. Slet fra markren til slutningen af en linje, ved at skrive:    d$
  3. Slet en hel linje, ved at skrive:    dd

  4. Gentag en bevgelse ved at vedhfte et nummer i begyndelsen:   2w
  5. Formatet til en ndr-kommando er:
               operator   [nummer]   bevgelse
     hvor:
       operator    - er hvad der skal gres, ssom  d  for at slette
       [nummer]    - er en valgfri tller til at gentage bevgelsen
       bevgelse   - flytter over teksten som der skal arbejde p, ssom  w (ord),
		   $ (til slutningen af linjen), osv.

  6. Flyt til begyndelsen af linjen med et nul:  0

  7. Fortryd tidligere handlinger, ved at skrive: 	   u  (lille u)
     Fortryd alle ndringerne p en linje, ved at skrive:  U  (stort U)
     Fortryd fortrydelserne, ved at skrive:		   CTRL-R

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 Lektion 1.3.1: PUT-INDSTTE-KOMMANDOEN


       ** Skriv	p  for at put-indstte tidligere slettede tekst efter markren. **

  1. Flyt markren ned til den frste linje med --->.

  2. Skriv  dd  for at slette linjen og gemme den i et Vim-register.

  3. Flyt markren til c)-linjen, OVER hvor den slettede linje skal vre.

  4. Skriv   p   for at put-indstte linjen nedenunder markren.

  5. Gentag trin 2 til 4 for at put-indstte alle linjerne i den rigtige rkkeflge.

---> d) Kan du lre lige s?
---> b) Violer er bl,
---> c) Intelligens skal lres,
---> a) Roser er rde,



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		        Lektion 1.3.2: ERSTAT-KOMMANDOEN


       ** Skriv  rx  for at erstatte tegnet ved markren med  x . **

  1. Flyt markren ned til den frste linje med --->.

  2. Flyt markren s den er ovenp den frste fejl.

  3. Skriv   r	og s tegnet som skal vre der.

  4. Gentag trin 2 og 3 indtil den frste linje er magen til den anden.

--->  Def var nohen der trukkede p de forkerge taster, da linjem blev skrevet!
--->  Der var nogen der trykkede p de forkerte taster, da linjen blev skrevet!

  5. Flyt nu videre til lektion 3.3.

BEMRK: Husk p at du skal lre ved at gre det, ikke ved at lre det udenad.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			Lektion 1.3.3: NDRINGSOPERATOREN


	   ** ndr indtil slutningen af et ord, ved at skrive  ce . **

  1. Flyt markren ned til den frste linje med --->.

  2. Placer markren p  k'et  i  likibj.

  3. Skriv  ce  og det korrekte ord (i dette tilflde skrives  njen ).

  4. Tryk p <ESC> og flyt til det nste tegn der skal ndres.

  5. Gentag trin 3 og 4 indtil den frste stning er magen til den anden.

---> Likibj har nogle f ndo som vnes ndres vrf ndringsoperatoren.
---> Linjen har nogle f ord som skal ndres med ndringsoperatoren.

Bemrk at  ce  sletter ordet og stiller dig i indst-tilstand.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		       Lektion 1.3.4: FLERE NDRINGER MED c


     ** NDRINGSOPERATOREN bruges med de samme bevgelser som slet. **

  1. ndringsoperatoren virker p samme mde som slet. Formatet er:

         c    [nummer]   bevgelse

  2. Bevgelserne er de samme, ssom   w (ord) og  $ (slutningen af linjen).

  3. Flyt ned til den frste linje med --->.

  4. Flyt markren til den frste fejl.

  5. Skriv  c$  og skriv resten af linjen som den anden linje og tryk p <ESC>.

---> Slutningen af linjen har brug for lidt hjlp til at blive ligesom den anden.
---> Slutningen af linjen skal rettes med   c$-kommandoen.

BEMRK: Du kan bruge backspace-tasten til at rette fejl nr du skriver.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			         Lektion 3 OPSUMMERING


  1. Put-indst tekst tilbage som lige er blevet slettet, ved at skrive   p .
     Det put-indstter den slettede tekst EFTER markren (hvis en linje blev
     slettet, s vil den vre p linjen nedenunder markren).

  2. Erstat tegnet under markren, ved at skrive   r   og s
     tegnet som du vil have der.

  3. ndringsoperatoren giver dig mulighed for at ndre fra markren til hvor
     bevgelsen tager dig hen. Skriv f.eks.  ce  for at ndre fra markren til
     slutningen af ordet,  c$  for at ndre til slutningen af en linjen.

  4. Formatet til at ndre er:

	 c   [nummer]   bevgelse

G nu videre til den nste lektion.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		   Lektion 1.4.1: MARKRPLACERING OG FILSTATUS

  ** Skriv CTRL-G for at vise din placering i filen og filstatussen.
     Skriv  G  for at flytte til en linje i filen. **

  BEMRK: Ls hele lektionen, inden trinnene udfres!!

  1. Hold Ctrl-tasten nede og tryk p  g . Vi kalder det CTRL-G.
     Der vises en meddelelse nederst p siden med filnavnet og
     placeringen i filen. Husk linjenummeret til trin 3.

BEMRK: Du ser muligvis markrplaceringen nederst i hjre hjrne af skrmen.
        Det sker nr 'ruler'-valgmuligheden er sat (se  :help 'ruler'  )

  2. Tryk p  G  for at flytte dig nederst i filen.
     Skriv  gg  for at flytte dig verst i filen.

  3. Skriv nummeret p den linje du var p, og s  G . Det
     returnerer dig til den linje du var p da du frste trykkede p CTRL-G.

  4. Hvis du fler dig klar til at gre det, s udfre trin 1 til 3.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			Lektion 1.4.2: SG-KOMMANDOEN


     ** Skriv  /  efterfulgt af en frase for at sge efter frasen. **

  1. I normal tilstand, skriv  /-tegnet  . Bemrk at det og markren
     vises i bunden af skrmen som med  :-kommandoen	.

  2. Skriv nu 'feeejjl' <ENTER>. Det er ordet du vil sge efter.

  3. Sg efter den samme frase igen, ved blot at skrive  n .
     Sg efter den samme frase i den anden retning, ved at skrive  N .

  4. Sg efter en frase i den modsatte retning, ved at bruge  ?  i stedet for  / .

  5. G tilbage hvor du kom fra, ved at trykke p  CTRL-O  (Hold Ctrl nede mens
     der trykkes p bogstavet o). Gentag for at g lngere tilbage. CTRL-I gr fremad.

--->  "feeejjl" er den forkerte mde at stave til fejl; feeejjl er en fejl.
BEMRK: Nr sgningen nr slutningen af filen, s fortstter den ved
        begyndelsen, men mindre 'wrapscan'-valgmuligheden er blevet slet fra.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		 Lektion 1.4.3: SG EFTER MODSVARENDE PARENTESER


	      ** Skriv  %  for at finde en modsvarende ),], eller } . **

  1. Placer markren p (, [, eller { p linjen nedenfor med --->.

  2. Skriv nu  %-tegnet  .

  3. Markren flytter til den modsvarende parentes eller klamme.

  4. Skriv  %  for at flytte markren til den anden modsvarende klamme.

  5. Flyt markren til en anden (,),[,],{ eller } og se hvad  %  gr.

---> Dette ( er en testlinje med ('er, ['er ] og {'er }. ))


BEMRK: Det er meget nyttigt ved fejlretning af et program som mangler
        modsvarende parenteser!


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		        Lektion 1.4.4: UDSKIFT-KOMMANDOEN


	** Skriv  :s/gammel/ny/g  for at udskifte 'gammel' med 'ny'. **

  1. Flyt markren ned til linjen med --->.

  2. Skriv  :s/dett/det <ENTER> . Bemrk at kommandoen kun ndre den
     frste forekomst af "dett" p linjen.

  3. Skriv nu  :s/dett/det/g . Nr  g-flaget  tilfjes, s udskiftes der
     globalt p linjen, alts ndre alle forekomster af "dett" p linjen.

---> dett siges at dett er bedst at se p blomster nr dett er forr.

  4. ndr hver forekomst af en tegnstreng mellem to linjer,
     ved at skrive   :#,#s/gammel/ny/g    hvor #,# er linjenumrene over omrdet
                                          af linjer hvor udskiftningen skal ske.
     Skriv           :%s/gammel/ny/g      for at ndre hver forekomst i hele filen.
     Skriv           :%s/gammel/ny/gc     for at finde hver forekomst i hele filen,
     			                  med en prompt om hvorvidt der skal udskiftes eller ej.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			         Lektion 4 OPSUMMERING


  1. CTRL-G  viser din placering i filen og filstatussen.
             G  flytter til slutningen af filen.
     nummer  G  flytter til linjenummeret.
            gg  flytter til den frste linje.

  2. Nr der skrives  /	efterfulgt af en frase, s sges der FREMAD efter frasen.
     Nr der skrives  ?	efterfulgt af en frase, s sges der BAGLNS efter frasen.
     Skriv  n  efter en sgning, for at finde den nste forekomst i den samme retning,
     eller  N  for at sge i den modsatte retning.
     CTRL-O tager dig tilbage til ldre placeringer, CTRL-I til nyere placeringer.

  3. Nr der skrives  %	mens markren er p et (,),[,],{, eller }, s gr den til dens match.

  4. Udskift den frste frste gammel med ny p en linje, ved at skrive    :s/gammel/ny
     Udskift alle gammel med ny p en linje, ved at skrive		   :s/gammel/ny/g
     Udskift fraser mellem to linenumre, ved at skrive			   :#,#s/gammel/ny/g
     Udskift alle forekomster i filen, ved at skrive			   :%s/gammel/ny/g
     Sprg om bekrftelse hver gang, ved at tilfje 'c'			   :%s/gammel/ny/gc

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		     Lektion 1.5.1: UDFR EN EKSTERN KOMMANDO


   ** Skriv  :!	efterfulgt af en ekstern kommando, for at udfre kommandoen. **

  1. Skriv den velkendte kommando	:  for at stte markren nederst p
     skrmen. Det giver dig mulighed for at indtaste en kommandolinjekommando.

  2. Skriv nu  !-tegnet  (udrbstegn). Det giver dig mulighed
     for at udfre enhver ekstern skalkommando.

  3. Skriv f.eks.   ls   efter ! og tryk s p <ENTER>. Det
     viser dig en liste over din mappe, ligesom hvis du var ved
     skalprompten. Eller brug  :!dir  hvis ikke ls virker.

BEMRK: Det er muligt at udfre enhver ekstern kommando p denne mde,
        ogs med argumenter.

BEMRK: Alle  :-kommandoer  skal afsluttes ved at trykke p <ENTER>.
        Vi nvner det ikke altid herefter.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		      Lektion 1.5.2: MERE OM AT SKRIVE FILER


     ** Gem ndringerne som er foretaget til teksten, ved at skrive  :w FILNAVN. **

  1. Skriv  :!dir  eller  :!ls  for at f en liste over din mappe.
     Du ved allerede at du skal trykke p <ENTER> bagefter.

  2. Vlg et filnavn som ikke findes endnu, ssom TEST.

  3. Skriv nu:	 :w TEST   (hvor TEST er filnavnet som du vlger.)

  4. Det gemmer hele filen (Vim-vejledningen) under navnet TEST.
     Bekrft det, ved igen at skrive    :!dir  eller  :!ls   for at se din mappe.

BEMRK: Hvis du afslutter Vim og starter den igen med  vim TEST , s vil
        filen vre en njagtig kopi af vejledningen da du gemte den.

  5. Fjern nu filen, ved at skrive (MS-DOS):    :!del TEST
				eller (Unix):	:!rm TEST


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		    Lektion 1.5.3: MARKR TEKST SOM SKAL SKRIVES


	** Gem en del af en fil, ved at skrive  v  bevgelse  :w FILNAVN **

  1. Flyt markren til denne linje.

  2. Tryk p  v  og flyt markren til the femte punkt nedenfor. Bemrk at
     teksten er fremhvet.

  3. Tryk p  :-tegnet  . Nederst p skrmen vises  :'<,'>.

  4. Skriv  w TEST  , hvor TEST er filnavnet som endnu ikke findes. Bekrft
     at du ser  :'<,'>w TEST  inden du trykker p <ENTER>.

  5. Vim skriver de markerede linjer til filen TEST. Brug  :!dir  eller  :!ls
     for at se den. Fjern den ikke endnu! Vi bruger den i den nste lektion.

BEMRK: Nr der trykkes p  v  startes visuel markering. Du kan flytte markren
        rundt for at gre markeringen strre eller mindre. Du kan s bruge en
        operator til at gre noget med teksten. F.eks. vil  d  slette teksten.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		    Lektion 1.5.4: INDHENT OG SAMMENLG FILER


       ** Indst indholdet af en fil, ved at skrive  :r FILNAVN  **

  1. Placer markren lige ovenover denne linje.

BEMRK: Nr trin 2 er udfrt vil du se teksten fra lektion 5.3. Flyt s
        NED for at se denne lektion igen.

  2. Indhent nu din TEST-fil med kommandoen   :r TEST   , hvor TEST er
     navnet p filen som du brugte.
     Filen som du indhenter placeres under markrens linje.

  3. Bekrft at en fil blev indhentet, ved at flytte markren tilbage og bemrk
     at der nu er to kopier af lektion 5.3, den originale og filversionen.

BEMRK: Du kan ogs lse outputtet fra en ekstern kommando. F.eks. lser
        :r !ls  outputtet fra ls-kommandoen og indstter det under
        markren.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			         Lektion 5 OPSUMMERING


  1.  :!kommando  udfrer en ekstern kommando.

      Nogle nyttige eksempler er:
	 (MS-DOS)	  (Unix)
	  :!dir		   :!ls		   -  viser en liste over mapper.
	  :!del FILNAVN    :!rm FILNAVN    -  fjerner filen FILNAVN.

  2.  :w FILNAVN   skriver den nuvrende Vim-fil til disken med navnet FILNAVN.

  3.  v  bevgelse  :w FILNAVN  gemmer de visuelt markerede linjer i filen
      FILNAVN.

  4.  :r FILNAVN  indhenter diskfilen FILNAVN og indstter den under
      markrens placering.

  5.  :r !dir  lser outputtet fra dir-kommandoen og indstter det under
      markrens placering.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			    Lektion 1.6.1: BN-KOMMANDOEN


 ** Skriv  o  for at bne en linje under markren og stille dig i indst-tilstand. **

  1. Flyt markren ned til linjen med --->.

  2. Skriv bogstavet  o  med smt, for at bne en linje UNDER markren og stille
     dig i indst-tilstand.

  3. Skriv nu noget tekst og tryk p <ESC> for at afslutte indst-tilstand.

---> Efter  o  er blevet skrevet, placeres markren p den bne linje i indst-tilstand.

  4. Skriv blot et stort	O , i stedet for et lille  o  , for at
     bne en linje OVENOVER markren. Prv det p linjen nedenfor.

---> bn en line ovenover denne, ved at skrive O mens markren er p denne linje.




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			Lektion 1.6.2: VEDHFT-KOMMANDOEN


	     ** Skriv  a  for at indstte tekst EFTER markren. **

  1. Flyt markren ned til begyndelsen af linjen med --->.
  
  2. Tryk p  e  indtil markren er p slutningen af  lin .

  3. Skriv et  a  (med smt) for at vedhfte tekst EFTER markren.

  4. Fuldfr ordet ligesom linjen under det. Tryk p <ESC> for at afslutte
     indst-tilstand.

  5. Brug  e  til at flytte til det nste ufrdige ord og gentag trin 3 og 4.
  
---> Lin giver dig mulighed for at v vedhftnin af tekst til en linje.
---> Linjen giver dig mulighed for at ve vedhftning af tekst til en linje.

BEMRK: a, i og A gr alle til den samme indst-tilstand,
        den eneste forskel er hvor tegnene indsttes.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		     Lektion 1.6.3: AN ANDEN MDE AT ERSTATTE


      ** Skriv et stort  R  for at erstatte flere end t tegn. **

  1. Flyt markren ned til den frste linje med --->. Flyt markren til
     begyndelsen af den frste  xxx .

  2. Tryk nu p  R  og skriv nummeret som er under det p den anden linje,
     s det erstatter xxx .

  3. Tryk p <ESC> for at forlade erstat-tilstand. Bemrk at resten af linjen
     forbliver undret.

  4. Gentag trinnene for at erstatte det sidste xxx.

---> Nr 123 lgges sammen med xxx giver det xxx.
---> Nr 123 lgges sammen med 456 giver det 579.

BEMRK: Erstat-tilstand er ligesom indst-tilstand, men hvert indtastede
        tegn sletter et eksisterende tegn.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			Lektion 1.6.4: KOPER OG INDST TEKST


	  ** Brug  y-operatoren  til at kopiere tekst og  p  til at indstte den **

  1. G ned til linjen med ---> og placer markren efter "a)".
  
  2. Start visuel tilstand med  v  og flyt markren til lige inden "frste".
  
  3. Skriv  y  for at yank-udtrkke (kopiere) den fremhvede tekst.

  4. Flyt markren til slutningen af den nste linje:  j$

  5. Skriv  p  for at put-indstte (indstte) teksten. Skriv s:  a andet <ESC> .

  6. Brug visuel tilstand til at markere " punkt.", yank-udtrk med  y , flyt
     til slutningen af nste linje med  j$  og put-indst teksten der med  p .

--->  a) dette er det frste punkt.
      b)

  BEMRK: du kan ogs bruge  y  som en operator;  yw  yank-udtrkker et ord.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			  Lektion 1.6.5: ST VALGMULIGHED


	  ** St en valgmulighed s en sgning eller udskiftning ignorerer forskelle p store/sm bogstaver **

  1. Sg efter 'ignorer', ved at skrive:   /ignorer  <ENTER>
     Gentag flere gange ved at trykke p  n .

  2. St 'ic'-valgmuligheden (Ignorer forskelle p store/sm bogstaver), ved at skrive:   :set ic

  3. Sg nu efter 'ignorer' igen, ved at trykke p  n
     Bemrk at Ignorer og IGNORER nu ogs bliver fundet.

  4. St 'hlsearch'- og 'incsearch'-valgmulighederne:  :set hls is

  5. Skriv nu sg-kommandoen igen og se hvad der sker:  /ignorer <ENTER>

  6. Deaktivr ignorering af forskelle p store/sm bogstaver, ved at skrive:  :set noic

BEMRK: Fjern fremhvningen af matches, ved at skrive:   :nohlsearch 
BEMRK: Hvis du vil ignorere case for en enkelt sg-kommando, s brug  \c
        i frasen:  /ignorer\c  <ENTER>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			         Lektion 6 OPSUMMERING

  1. Skriv  o  for at bne en linje NEDENUNDER markren og starte indst-tilstand.
     Skriv  O  for at bne en linje OVENOVER markren.

  2. Skriv  a  for at indstte tekst EFTER markren.
     Skriv  A  for at indstte tekst efter slutningen af linjen.

  3.   e-kommandoen  flytter til slutningen af et ord.

  4.   y-operatoren  yank-udtrkker (kopierer) tekst,  p  put-indstter (indstter) den.

  5. Nr der skrives et stort  R  stilles du i erstat-tilstand indtil der trykkes p  <ESC>  .

  6. Nr der skrives ":set xxx", s sttes valgmuligheden "xxx". Nogle valgmuligheder er:
  	'ic' 'ignorecase'	ignorer forskelle p store/sm bogstaver nr der sges
	'is' 'incsearch'	vis delvise match for en sgefrase
	'hls' 'hlsearch'	fremhv alle fraser som matcher
     Du kan enten bruge det lange eller korte valgmulighedsnavn.

  7. Vedhft "no" i begyndelsen, for at sl en valgmulighed fra:   :set noic

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		           Lektion 1.7.1: F HJLP


		      ** Brug online-hjlpesystemet **

  Vim har et omfattende online-hjlpesystem. Prv en af disse tre,
  for at komme i gang:
	- tryk p <HELP>-tasten (hvis du har en)
	- tryk p <F1>-tasten (hvis du har en)
	- skriv   :help <ENTER>

  Ls teksten i hjlpevinduet for at finde ud af hvordan hjlpen virker.
  Skriv  CTRL-W CTRL-W   for at hoppe fra et vindue til et andet.
  Skriv    :q <ENTER>    for at lukke hjlpevinduet.

  Du kan finde hjlp om nsten alle emner, ved at give et argument til
  ":help"-kommandoen. Prv disse (husk at trykke p <ENTER>):

	:help w
	:help c_CTRL-D
	:help insert-index
	:help user-manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		      Lektion 1.7.2: OPRET ET OPSTARTS-SCRIPT


			  ** Aktivr Vim-funktionaliteter **

  Vim har mange flere funktionaliteter end Vi, men de fleste er deaktiveret som
  standard. For at bruge flere funktionaliteter skal du oprette en "vimrc"-fil.

  1. Begynd at redigere "vimrc"-filen. Det afhnger af dit system:
	:e ~/.vimrc		i Unix
	:e ~/_vimrc		i MS-Windows

  2. Ls nu indholdet af eksempel "vimrc"-filen:
	:r $VIMRUNTIME/vimrc_example.vim

  3. Skriv filen med:
	:w

  Nste gang du starter Vim bruger den syntaksfremhvning.
  Du kan tilfje alle dine foretrukne indstillinger til "vimrc"-filen.
  F mere information, ved at skrive  :help vimrc-intro

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			     Lektion 1.7.3: FULDFRELSE


	      ** Kommandolinjefuldfrelse med CTRL-D og <TAB> **

  1. Srg for at Vim ikke er i kompatibel tilstand:  :set nocp

  2. Se hvilke filer der er i mappen:  :!ls   eller  :!dir

  3. Skriv begyndelsen af en kommando:  :e

  4. Tryk p  CTRL-D  og Vim viser en liste over kommandoer der begynder med "e".

  5. Tryk p <TAB>  og Vim vil fuldfre kommandonavnet til ":edit".

  6. Tilfj nu et mellemrum og begyndelsen af et eksisterende filnavn:  :edit FIL

  7. Tryk p <TAB>. Vim fuldfrer navnet (hvis det er unikt).

BEMRK: Fuldfrelse virker til mange kommandoer. Prv blot at trykke p
        CTRL-D og <TAB>. Det er srligt nyttigt til  :help .

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			         Lektion 7 OPSUMMERING


  1. Skriv  :help  eller tryk p <F1> eller <Help>  for at bne et hjlpevindue.

  2. Skriv  :help kommando  for at finde hjlp om  kommando .

  3. Skriv  CTRL-W CTRL-W  for at hoppe til et andet vindue

  4. Skriv  :q  for at lukke hjlpevinduet

  5. Opret et vimrc-opstarts-script for at bevare dine foretrukne indstillinger.

  6. Nr der skrives en  :-kommando  , s tryk p CTRL-D for at se
     mulige fuldfrelser. Tryk p <TAB> for at bruge en fuldfrelse.







~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Det afslutter Vim-vejledningen. Det var meningen den skulle give et
  kortfattet overblik af Vim-editoren, lige nok til at du kan bruge editoren
  nogenlunde let. Den er langt fra komplet, da Vim har mange mange flere
  kommandoer. Ls brugermanualen som det nste: ":help user-manual".

  Denne bog anbefales, til yderligere lsning og studering:
	Vim - Vi Improved - af Steve Oualline
	Forlag: New Riders
  Den frste bog som helt er tilegnet Vim. Specielt nyttig for begyndere.
  Der er mange eksempler og billeder.
  Se https://iccf-holland.org/click5.html

  Denne bog er ldre og mere om Vi end Vim, men anbefales ogs:
	Learning the Vi Editor - af Linda Lamb
	Forlag: O'Reilly & Associates Inc.
  Det er en god bog til at komme til kende nsten alt hvad du vil gre med Vi.
  Den sjette udgave inkluderer ogs information om Vim.

  Vejledningen blev skrevet af Michael C. Pierce og Robert K. Ware,
  Colorado School of Mines med ideer af Charles Smith,
  Colorado State University. E-mail: bware@mines.colorado.edu.

  ndret til Vim af Bram Moolenaar.

  Oversat af scootergrisen.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~