File: vi.html

package info (click to toggle)
doc-linux-nl 20051127-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 16,408 kB
  • ctags: 94
  • sloc: xml: 47,403; makefile: 312; perl: 193; sh: 116; ansic: 12; csh: 9
file content (456 lines) | stat: -rw-r--r-- 15,729 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
<HTML
><HEAD
><TITLE
>Vi</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.64
"><LINK
REL="HOME"
TITLE="Het Slackware Handboek"
HREF="slackware-handboek.html"><LINK
REL="PREVIOUS"
TITLE="XFree86"
HREF="xfree86.html"><LINK
REL="NEXT"
TITLE="GNU Free Documentation License"
HREF="gfdl.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="normal.css"></HEAD
><BODY
CLASS="chapter"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Het Slackware Handboek: Voor Slackware Linux 9.1</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="xfree86.html"
>Terug</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl.html"
>Volgende</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="AEN799"
>Hoofdstuk 14. Vi</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Inhoudsopgave</B
></DT
><DT
>14.1. <A
HREF="vi.html#AEN801"
>Opmerking vooraf</A
></DT
><DT
>14.2. <A
HREF="vi.html#AEN809"
>Wat is Vi</A
></DT
><DT
>14.3. <A
HREF="vi.html#AEN814"
>De eerste stap</A
></DT
><DT
>14.4. <A
HREF="vi.html#AEN826"
>Kopi&euml;ren, verwijderen, knippen en plakken</A
></DT
><DT
>14.5. <A
HREF="vi.html#AEN848"
>Tekst zoeken en vervangen</A
></DT
><DT
>14.6. <A
HREF="vi.html#AEN861"
>Vi configureren</A
></DT
><DT
>14.7. <A
HREF="vi.html#AEN870"
>Overzicht vi commando's</A
></DT
></DL
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN801"
>14.1. Opmerking vooraf</A
></H1
><P
>&#13;Als je op slackware vi op wilt starten met het commando <B
CLASS="command"
>vi</B
>, dan wordt de editor elvis opgestart. Hou daar dus rekening mee. Er bestaat in de directory /usr/bin een symbolic link naar elvis. Dit kun je zien door het commando:
</P
><PRE
CLASS="screen"
>&#13;user@slackware: <B
CLASS="command"
>ls -l /usr/bin/vi</B
>
</PRE
><P
>&#13;te geven. Om met dit commando vi op te starten, moet je dit dus even aanpassen.
</P
><P
>&#13;Overigens, alhoewel in dit hoofdstuk over vi gesproken wordt, wordt eigenlijk vi improved (VIM) besproken. Niet alle zaken die hier genoemd worden gelden namelijk voor vi.
</P
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN809"
>14.2. Wat is Vi</A
></H1
><P
>&#13;Vi (de afkorting VI staat voor Visual Interface) kun je beschouwen als een editor. Je kunt er tekst mee bewerken, maar ook bijvoorbeeld sources voor je programma's, bijvoorbeeld C programma's. Vi kent een aantal ingebouwde commando's die je het leven een stuk eenvoudiger maken. Een nadeel, voor zover je dat een nadeel kunt noemen, is dat je kennis moet hebben van een aantal commando's. In dit hoofdstuk vind je die commando's terug waarmee je de meeste taken kunt uitvoeren.
</P
><P
>&#13;Met vi kun je echter niet zomaar tekst invoeren. Vi kent namelijk twee verschillende modi, te weten een invoer modus (lees : insert) en een command modus. De eerst modus verklaart zich zelf, echter de tweede verdient een nadere uitleg.
</P
><P
>&#13;Met betrekking tot de command modus zijn er een aantal verschillende soorten commando's te onderkennen. Er zijn commando's die voorafgegaan moeten worden door het / teken, commando's die voorafgegaan moeten worden door het : teken en commando's die zonder een teken voor het commando gebruikt kunnen worden. In de volgende paragrafen worden de verschillende modi en de daarbij horende zaken behandeld.
</P
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN814"
>14.3. De eerste stap</A
></H1
><P
>&#13;Vi kun je starten door vanaf de command line het commando vi in te geven:
</P
><PRE
CLASS="screen"
>&#13;user@slackware: vi
</PRE
><P
>&#13;Na het invoeren van het voorgaande commando wordt VI gestart. Je kunt echter niet meteen beginnen met het invoeren van tekst aangezien je nu in de command modus zit. Om tekst in te voeren moet je aan VI aangeven dat je tekst wilt invoegen (insert). Je kunt nu op de insert toets drukken op je toetsenbord of je kunt de letter i indrukken op je toetsenbord. Hierna verschijnt links onderin het woord INSERT en kun je beginnen met het invoeren van tekst.
</P
><P
>&#13;Om de tekst te bewaren moet je het write commando gebruiken. Bedenk wel dat als je vi op deze manier hebt opgestart, je nog geen bestandsnaam hebt opgegeven. Dit zul je dus moeten doen bij het bewaren (write) van je tekst. Om je tekst te bewaren moet je eerst weer terug naar de command modus. Dit doe je door op de Escape knop van je toetsenbord te drukken. Daarna voer je als volgt het write commando uit:
</P
><PRE
CLASS="screen"
>&#13;:w text.txt
</PRE
><P
>&#13;De : betekent dat je dit teken op je toetsenbord moet ingeven. Hierna toets je de letter w om aan te geven dat je de tekst wilt bewaren (write) en hierna geef je de naam op van het bestand waarin je de tekst wilt bewaren.   
</P
><P
>&#13;Je kunt ook op het moment dat je vi opstart opgeven welk bestand je wilt bewerken of, als je een nieuw bestand maakt, de naam van dit nieuwe bestand meegeven als zogenaamde parameter. Vi zal, als het bestand bestaat, deze openen waarna je, natuurlijk rekening houdend met insert mode e.d., het bestand kunt bewerken. Het openen van een dergelijk bestand doe je zo:
</P
><PRE
CLASS="screen"
>&#13;user@slackware:vi test.txt
</PRE
><P
>&#13;Een andere mogelijkheid is het opstarten van vi waarna je opgeeft, in de command mode van vi, welk bestand je wilt bewerken (of lezen voor mijn part). Om dit te doen geef je binnen vi het volgende commando:
</P
><PRE
CLASS="screen"
>&#13;:e test.txt
</PRE
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN826"
>14.4. Kopi&euml;ren, verwijderen, knippen en plakken</A
></H1
><P
>&#13;Het meest essenti&euml;le weet je nu : hoe een stuk tekst te maken en op te slaan en hoe je een bestand moet maken c.q. openen. Er zijn natuurlijk nog veel meer dingen die je wilt doen, bijvoorbeeld een stuk tekst kopi&euml;ren of verwijderen. Voordat ik je iets vertel over kopi&euml;ren, moet je het volgende weten. Let wel : het stukje over buffers is eigenlijk bedoelt voor iemand die al weet hoe je moet kopi&euml;ren en dergelijke. Laat je dus hier niet door van de wijs brengen en sla dit deel desnoods over. 
</P
><P
>&#13;Als je tekst kopieert, dan wordt deze tekst tijdelijk ergens opgeslagen. Dit ergens wordt een buffer genoemd, een stukje geheugen. Trouwens, ook tijdens het schrijven van tekst wordt deze tekst ook in een buffer opgeslagen totdat je het geschrevene opslaat op bijvoorbeeld je schijf en je de editor verlaat. Vi kent 27 buffers, waarvan er eentje de zogenaamde onbenoemde buffer is oftewel de buffer die gebruikt wordt als jij niet opgeeft welke buffer er gebruikt moet worden. Je kunt zelf opgeven, als je dit wilt, naar welke buffer iets geplaats moet worden. Laat je hierdoor niet van de wijs brengen; ook als je dit niet doet dan is er niks aan de hand. VI gebruikt dan gewoon de "standaard" buffer. 
</P
><P
>&#13;Zoals ik al zei, kent vi 27 buffers. De eerste is de "default" buffer en die gebruik je als je verder niks opgeeft. Wil je nu een andere buffer gebruiken dan kun je dit doen middels de letters van het alfabet. Dus de letter "a" staat voor buffer a enzovoorts. Als je dus iets in buffer a wilt plaatsen, bijvoorbeeld iets wat je wilt kopi&euml;ren, dan doe je dit als volgt:
</P
><PRE
CLASS="screen"
>&#13;"a2yy
</PRE
><P
>&#13;Bovenstaand voorbeeld houdt in dat je twee regels naar de buffer a kopieerd. Let op het teken ". Dit betekent dat de inhoud van buffer a overschreven mag worden. Als je in plaats van het overschrijven van de buffer een aantal regels aan het eind van de buffer wilt plaatsen, dan moet je de hoofdletter A gebruiken in plaats van de kleine letter a, dus zo: 
</P
><PRE
CLASS="screen"
>&#13;"A2yy
</PRE
><P
>&#13;Overigens : deze commando's zijn natuurlijk niet zichtbaar als je ze gebruikt. Let dus goed op wat je doet!
</P
><P
>&#13;Goed, back to basic. Stel, je wilt een aantal regels kopi&euml;ren. De tekst die je hebt ziet er zo uit:
</P
><PRE
CLASS="screen"
>&#13;Dit is de eerste regel
Dit is een andere regel
Tja, weer een andere regel, t wordt een beetje saai zo
</PRE
><P
>&#13;Als je nu de eerste regel wilt kopi&euml;ren en na de laatste regel wilt plaatsen, ga dan met je cursor op de eerste regel staan op de letter D van Dit en druk twee keer op de toets van je toetsenbord waar het teken y op staat. Deze y staat in dit geval voor yank, oftewel kopieer. Het commando wat je dus geeft is : yy
</P
><P
>&#13;Ga nu naar de laatste regel, dus ga op de laatste regels staan en paste de tekst met het commando p. Bedenk hierbij dat dit commando's zijn die je in de command modus uit moet voeren waarbij geen : of / teken gebruikt hoeft te worden. Bedenk ook dat het pasten van tekst gebeurt na de regel waarop je staat. Voordat je tekst paste moet je natuurlijk wel de command modus actief hebben, denk daarom! 
</P
><P
>&#13;Als het goed is zal de tekst er nu als volgt uitzien:
</P
><PRE
CLASS="screen"
>&#13;Dit is de eerste regel
Dit is een andere regel
Tja, weer een andere regel, t wordt een beetje saai zo
Dit is de eerste regel
</PRE
><P
>&#13;Het deleten van tekst doe je eenvoudig met met het dd commando. Ook hier weer geldt dat je meerdere regels kunt verwijderen door een getal, bijvoorbeeld 3 om drie regels te verwijderen, op te geven voor het dd commando.
</P
><P
>&#13;Knippen en plakken van tekst werkt op dezelfde manier als kopi&euml;ren en plakken met de uitzondering van het gebruikte knip commando. Het klinkt misschien gek, maar om te knippen kun je het delete commando, dd, gebruiken. Wat er eigenlijk gebeurt bij het deleten van tekst is dat deze in een buffer opgeslagen wordt, immers je kunt verwijderen ook weer ongedaan maken dus ergens moet deze tekst nog aanwezig zijn. Dus een regel, of meerdere regels, kun je met het paste (p) commando op een andere plaats in de tekst zetten. Knippen en plakken zogezegd.
</P
><P
>&#13;In deze paragraaf zijn de verschillende commando's behandeld om hele regels te knippen kopi&euml;ren en dergelijke. Je kunt ook bijvoorbeeld een woord kopi&euml;ren en knippen. In plaats van de dubbele aanduiding yy of dd plaats je op de eerste positie van het commando de letter w van woord (eigenlijk word want het is natuurlijk engels) dus :
</P
><PRE
CLASS="screen"
>&#13;yw
</PRE
><P
>&#13;betekent het kopi&euml;ren van een woord en
</P
><PRE
CLASS="screen"
>&#13;dw
</PRE
><P
>&#13;betekent dat je een woord wilt verwijderen.
</P
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN848"
>14.5. Tekst zoeken en vervangen</A
></H1
><P
>&#13;Voor het zoeken van tekst gebruik je het / commando. Stel je wilt het woord slackware in een bestand zoeken dat ziet het zoek commando er als volgt uit:
</P
><PRE
CLASS="screen"
>&#13;/slackware
</PRE
><P
>&#13;Bedenk dat vi zoekt vanaf de plaats waar je cursor in de tekst staat. Wil je vanaf het begin van de tekst zoeken dat moet je zorgen dat je cursor aan het begin van je tekst staat. Je kunt ook opgeven in welke richting er gezocht moet worden. Als je vanaf de cursor positie tot het begin van je tekst wilt zoeken dan gebruik je het vraagteken (?):
</P
><PRE
CLASS="screen"
>&#13;?slackware
</PRE
><P
>&#13;Dus met / zoek je vanaf de cursor positie naar het einde van de tekst en met ? zoek je vanaf de cursor positie naar het begin (backwards) van de tekst. Als je hetgeen gevonden hebt waar je naar zocht en je wilt kijken of de string waar je naar zocht vaker voorkomt, dan kun je dit doen met het n (next) commando. Met het N commando kun je een volgend voorkomen van de zoek string in de tegengestelde richting zoeken. Stel, je zoekt op slackware met het ? commando, dus terug in de tekst. Als je deze string hebt gevonden en je wilt nu verder zoeken maar dan naar het einde van de tekst, dan gebruik je het N (dus hoofdletter n) commando.
</P
><P
>&#13;Er kunt tekst op verschillende manieren veranderen. Stel je wilt een woord vervangen. Dan kun je twee keer de insert toets op je toetsenbord indrukken waarna je tekst kunt overtypen. Een andere manier om een woord te vervangen in de zin waar de cursor zich bevindt is het het volgende commando:
</P
><PRE
CLASS="screen"
>&#13;:s/suse/slackware
</PRE
><P
>&#13;Om alle instanties van een woord in de zin waar de cursor zich bevindt te vervangen kun je het volgende commando gebruiken:
</P
><PRE
CLASS="screen"
>&#13;:s/suse/slackware/g
</PRE
><P
>&#13;Bovenstaand commando verandert de string suse in slackware in de zin waar de cursor staat. Als je nu alle instanties in de tekst van suse in slackware wilt veranderen dan kun je dit op de volgende manier doen:
</P
><PRE
CLASS="screen"
>&#13;:%s/suse/slackware
</PRE
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN861"
>14.6. Vi configureren</A
></H1
><P
>&#13;Het is heel goed mogelijk om vi aan je smaak aan te passen. Zo kun je tijdens een vi sessie met het set commando een aantal opties aan- of uitzetten. Helaas gelden deze aanpassingen alleen voor je huidige sessie, dus waarschijnlijk zul je je eigen aanpassingen een wat permanenter karakter willen geven. Om dit te doen moet je zorgen dat er een .vimrc (let op de punt voor de bestandsnaam) bestand in je home directory aanwezig is. Als deze nog niet bestaat dan moet je deze even cre&euml;ren. 
</P
><P
>&#13;Je kunt erg veel opties zelf bepalen met behulp van dit configuratie bestand. Zo kun je bijvoorbeeld bepalen of je syntax highlighting aan wilt hebben tijdens het bewerken van een source programma, je kunt op deze manier macro's gebruiken om je vi leven iets eenvoudiger te maken.
</P
><P
>&#13;Hieronder volgen een aantal opties die je in je .vimrc bestand kan zetten. 
</P
><PRE
CLASS="screen"
>&#13;number : hiermee kun je regel nummering aanzetten
showmatch : hiermee worden overeenkomstige haken getoond, dus { en }
backup : hiermee wordt een kopie bijgehouden als je een tekst aan het bewerken bent 
syntax on : syntax highlighting aan zetten
</PRE
><P
>&#13;Alle opties die je in het .vimrc bestand plaatst, moet je als volgt noteren:
</P
><PRE
CLASS="screen"
>&#13;set number
set syntax on
</PRE
><P
>&#13;Zie voor opties en dergelijke het voorbeeld vimrc bestand wat met jou kopie van vi is meegeleverd.
</P
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN870"
>14.7. Overzicht vi commando's</A
></H1
><PRE
CLASS="screen"
>&#13;
dd      :     delete c.q. knip
yy      :     kopieer
:q      :     quit, verlaat vi
:q!     :     verlaat vi zonder de veranderingen door te voeren
p       :     paste (plakken)
u       :     maak iets ongedaan
:w      :     schrijf, bewaar
:wq     :     bewaar en einde vi
x       :     verwijderen van 1 karakter
/       :     zoek naar een string vanaf cursor positie naar einde van het bestand
?       :     zoek naar een string van cursor positie naar het begin van het bestand
n       :     herhaal actie (next)
:set    :     een optie "zetten" voor vi
:set all:     laat alle mogelijke parameters zien die je in kunt stellen

</PRE
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="xfree86.html"
>Terug</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="slackware-handboek.html"
>Begin</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="gfdl.html"
>Volgende</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>XFree86</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>GNU Free Documentation License</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>