summaryrefslogtreecommitdiff
path: root/mnv/runtime/tutor/sv/mnv-02-beginner.tutor
blob: dc5b77cebb35f0ba56259da3051125207342d68b (plain)
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
# Välkommen till MNV-handledningen

# KAPITEL TVÅ

Hic Sunt Dracones: om detta är din första kontakt med mnv och du
vill utnyttja introduktionskapitlet, skriv
på kommandoraden i MNV-redigeraren
~~~ cmd
:Tutor mnv-01-beginner
~~~
Eller öppna bara [första kapitlet](@tutor:mnv-01-beginner) i handledningen via länken.

Det tar ungefär 8–10 minuter att gå igenom detta kapitel,
beroende på hur mycket tid du lägger på att experimentera.


# Lektion 2.1.1: BEHÄRSKA TEXTOBJEKT

** Arbeta med logiska textblock med precision med hjälp av textobjekt **

1. Öva på ordoperationer:
- Placera markören på valfritt ord i raden nedan
- Skriv `diw`{normal} för att radera INNER ord (ord utan omgivande mellanslag)
- Skriv `daw`{normal} för att radera ETT ORD (inklusive efterföljande blanksteg)
- Prova med andra operatorer: `ciw`{normal} (ändra), `yiw`{normal} (yank),
`gqiw`{normal} (formatera)

Öva på: ”MNV's”, (text_object) och ’powerful’ här.

2. Arbeta med innehåll inom parenteser:
- Placera markören inom något av parenteserna () {} [] <> nedan
- Skriv `di(`{normal} eller `dib`{normal} (ta bort inre parentes)
- Skriv `da(`{normal} eller `dab`{normal} (ta bort runt parenteserna)
- Prova samma sak med `i”`{normal}/`a”`{normal} för citattecken, `it`{normal}/`at`{normal} för HTML/XML-taggar

Testfall: {curly}, [square], <angle> och ”quoted” objekt.

3. Manipulering av stycken och meningar:
- Använd `dip`{normal} för att radera inre stycke (markören var som helst i stycket)
- Använd `vap`{normal} för att visuellt markera hela stycket
- Prova `das`{normal} för att radera en mening (fungerar mellan .!? skiljetecken)

4. Avancerade kombinationer:
- `ciwnew<ESC>`{normal} - Ändra aktuellt ord till ”new”
- `ciw”<CTRL-R>-”<ESC>`{normal} - Sätt aktuellt ord inom citattecken
- `gUit`{normal} - Skriv inre HTML-tagginnehåll med versaler
- `va”p`{normal} - Markera text inom citattecken och klistra in över den

Slutlig övning: (Ändra ”denna" text) genom att [tillämpa {olika} operationer]<


# Lektion 2.1.2: DE NAMNGIVNA REGISTREN

** Lagra två kopierade ord samtidigt och klistra sedan in dem **

1. Flytta markören till raden under märket ✓

2. Navigera till valfri punkt i ordet ”Edward” och skriv `”ayiw`{normal}

**MINNESREGEL**: *in i register(”) med namnet (a) (y)ank (i)nner (w)ord*

3. Navigera framåt till ordet ’cookie’ (`fk`{normal} eller `3fc`{normal}
eller `$2b`{normal} eller `/co`{normal} `<ENTER>`{normal}) och skriv `"byiw`{normal}

4. Navigera till valfri punkt i ordet ’Vince’ och skriv `ciw<CTRL-R>a<ESC>` {normal}

**MNEMONIC**: *(c)hange (i)nner (w)ord med <innehållet i (r)egister> med namnet (a)*

5. Navigera till valfri punkt i ordet ”cake” och skriv `ciw<CTRL-R>b<ESC>`{normal}

a) Edward kommer hädanefter att ansvara för kakorna
b) I denna egenskap kommer Vince att ha ensamrätt att bestämma över kakorna

OBS: Delete fungerar även i register, dvs. `"sdiw`{normal} raderar
ordet under markören till register s.

REFERENS: [Register](register)
[Namngivna register](quotea)
[Motion](text-objects)
[CTRL-R](i_CTRL-R)


# Lektion 2.1.3: UTTRYCKREGISTRET

** Infoga resultaten av beräkningar direkt **

1. Flytta markören till raden under märket ✗

2. Navigera till valfri punkt på det angivna talet

3. Skriv `ciw<CTRL-R>=`{normal}60\*60\*24 `<ENTER>`{normal}

4. På nästa rad går du in i infogningsläget och lägger till dagens datum med
`<CTRL-R>=`{normal}`system(’date’)`{mnv} `<ENTER>`{normal}

OBS: Alla anrop till system är beroende av operativsystemet, t.ex. på Windows använder du
`system(’date /t’)`{mnv} eller `:r!date /t`{mnv}

Jag har glömt det exakta antalet sekunder i en dag, är det 84600?
Dagens datum är:

OBS: samma sak kan uppnås med `:pu=`{normal}`system(’date’)` {mnv}
eller, med färre tangenttryckningar `:r!date`{mnv}

REFERENS: [Uttrycksregister](quote=)


# Lektion 2.1.4: DE NUMMERERADE REGISTRA

** Tryck på `yy`{normal} och `dd`{normal} för att se deras effekt på registren **

1. Flytta markören till raden under den markerade ✓

2. Kopiera raden som börjar med ”0.”, och inspektera sedan registren med `:reg`{mnv} `<ENTER>`{normal}

3. Ta bort rad 0 med `"cdd`{normal}, och inspektera sedan registren
(Var förväntar du dig att rad 0 ska vara?)

4. Fortsätt att radera varje efterföljande rad och kontrollera `:reg`{mnv} medan du gör det

OBS: Du bör lägga märke till att gamla rader som raderats flyttas nedåt i listan
när nya rader som raderats läggs till

5. Klistra nu in följande register i ordning: c, 7, 4, 8, 2. Dvs. `"7p`{normal}

0. Detta
9. vagga
8. hemlighet
7. är
6. på
5. axeln
4. en
3. krig
2. meddelande
1. hyllning


OBS: Radradering av hela rader (`dd`{normal}) lever mycket längre i de
numrerade registren än radradering av hela rader eller radering som involverar
mindre rörelser

REFERENS: [Numrerade register](quote0)


# Lektion 2.1.5: SPECIALREGISTER

** Använd systemets urklipp och blackhole-register för avancerad redigering **

Obs: Användning av urklipp kräver X11/Wayland-bibliotek på Linux-system OCH
en MNV byggd med ”+clipboard” (vanligtvis en Huge-byggnad). Kontrollera med
`:version`{mnv} och `:echo has(’clipboard_working’)`{mnv}

1. Urklippsregister `+`{normal} och `*`{normal} :
- `”+y`{normal} - Kopiera till systemets urklipp (t.ex. `”+yy`{normal} för aktuell rad)
- `"+p`{normal} - Klistra in från systemets urklipp
- `”*`{normal} är primärt val på X11 (mittenklick), `”+`{normal} är urklipp

Prova: ”+yy och klistra sedan in i ett annat program med Ctrl-V eller Cmd+V

2. Blackhole-registret `_`{normal} raderar text:
- `”_daw`{normal} - Radera ord utan att spara i något register
- Användbart när du inte vill skriva över ditt standardregister `”`{normal}
- Observera att detta använder textobjektet ”a Word”, som introducerades i en tidigare
lektion
- `”_dd`{normal} - Ta bort rad utan att spara
- `”_dap`{normal} - Ta bort stycke utan att spara
- Kombinera med antal: `3”_dw`{normal}

Övning: ”_diw på valfritt ord för att radera det utan att påverka yank-historiken

3. Kombinera med visuella markeringar:
- Markera text med V och sedan `”+y`{normal}
- För att klistra in från urklipp i infogningsläge: `<CTRL-R>+`{normal}
- Försök öppna ett annat program och klistra in från urklipp

4. Kom ihåg:
- Urklippsregister fungerar mellan olika MNV-instanser
- Urklippsregistret fungerar inte alltid
- Blackhole förhindrar oavsiktlig överskrivning av register
- Standardregistret `"`{normal} är fortfarande tillgängligt för normal yank/paste
- Namngivna register (a-z) förblir privata för varje MNV-session

5. Felsökning av urklipp:
- Kontrollera stöd med `:echo has(’clipboard_working’)`{mnv}
- 1 betyder tillgängligt, 0 betyder inte kompilerat
- På Linux kan mnv-gtk- eller mnv-x11-paketet behövas
(kontrollera `:version`{mnv} -utdata)


# Lektion 2.1.6: SKÖNHETEN I MARKERINGAR

** Undvik aritmetik för kodapor **

OBS: ett vanligt problem vid kodning är att flytta runt stora kodblock.
Följande teknik hjälper till att undvika beräkningar på talraden i samband
med operationer som `"a147d`{normal} eller `:945,1091d a`{mnv} eller ännu värre
med `i<CTRL-R>=`{normal}1091-945 `<ENTER>` {normal} först

1. Flytta markören till raden nedan markerad med ✓

2. Gå till den första raden i funktionen och markera den med `ma`{normal}

OBS: den exakta positionen på raden är INTE viktig!

3. Navigera till slutet av raden och sedan till slutet av kodblocket
med `$%`{normal}

4. Ta bort blocket till register a med `”ad'a`{normal}

**MINNESREGEL**: *till register(”) med namnet (a) lägg (d)eletionen från markören till
raden som innehåller markeringen(') (a)*

5. Klistra in blocket mellan BBB och CCC `"ap` {normal}

OBS: öva på denna operation flera gånger för att bli flytande `ma$%"ad'a`{normal}

~~~ cmd
AAA
function itGotRealBigRealFast() {
if ( somethingIsTrue ) {
doIt()
}
// taxonomin för vår funktion har ändrats och den
// är inte längre alfabetiskt logisk i sin nuvarande position

// föreställ dig hundratals rader med kod

// naivt sett skulle du kunna navigera till början och slutet och registrera eller
// komma ihåg varje radnummer
}
BBB
CCC
~~~

OBS: märken och register delar inte samma namnområde, därför är register a
helt oberoende av märket a. Detta gäller inte register och
makron.

REFERENS: [Markeringar](markeringar)
[Markeringsrörelser](markeringsrörelser) (skillnaden mellan ' och \`)


# Lektion 2.1 SAMMANFATTNING

1. Textobjekt möjliggör precisionsredigering:
- `iw`{normal}/`aw`{normal} - inuti/runt ord
- `i[`{normal}/`a[`{normal} - inuti/runt parentes
- `i”`{normal}/`a”`{normal} - inuti/runt citattecken
- `it`{normal}/`at`{normal} - inuti/runt tagg
- `ip`{normal}/`ap`{normal} - inuti/runt stycke
- `is`{normal}/`as`{normal} - inuti/runt mening

2. För att lagra (kopiera, radera) text i och hämta (klistra in) från totalt
26 register (a-z)
3. Kopiera ett helt ord från valfri plats i ett ord: `yiw`{normal}
4. Ändra ett helt ord från valfri plats i ett ord: `ciw` {normal}
5. Infoga text direkt från register i infogningsläge: `<CTRL-R>a`{normal}

6. Infoga resultaten av enkla aritmetiska operationer:
`<CTRL-R>=`{normal}60\*60`<ENTER>`{normal} i infogningsläge
7. Infoga resultaten av systemanrop:
`<CTRL-R>=`{normal}`system(’ls -1’)`{mnv}`<ENTER>`{normal} i infogningsläge

8. Inspektera register med `:reg`{mnv}
9. Lär dig den slutliga destinationen för raderingar av hela rader: `dd`{normal} i
de numrerade registren, dvs. i fallande ordning från register 1 till 9. Uppskatta
att raderingar av hela rader bevaras i de numrerade registren längre
än någon annan operation
10. Lär dig den slutliga destinationen för alla yanks i de numrerade registren och
hur kortlivade de är

11. Placera markeringar från kommandoläge `m[a-zA-Z0-9]` {normal}
12. Flytta radvis till en markering med `'`{normal}

13. Specialregister:
- `”+`{normal}/`”*`{normal} - Systemets urklipp (beroende på operativsystem)
- `"_`{normal} - Blackhole (kasta bort raderad/yankad text)
- `”=`{normal} - Uttrycksregister
- `”-`{normal} - Litet raderingsregister


# SLUTSATS

Detta avslutar kapitel två i MNV Tutor. Det är ett pågående arbete.

Detta kapitel är skrivet av Paul D. Parker och Christian Brabandt.

Modifierat för mnv-tutor-mode av Restorer.

Översatt av Daniel Nylander <mnv@danielnylander.se>.