From: hansm@cs.kun.nl (Hans Mulder)
Subject: Re: leertijd van vi
Keywords: vi
Organization: University of Nijmegen, The Netherlands
Distribution: nlnet
Date: Thu, 17 Dec 1992 14:21:13 GMT

In <BzEIpD.52K@sci.kun.nl> schrijft patricka@cs.kun.nl (Patrick Atoon):

>Hans Mulder (hansm@cs.kun.nl) en ook Johan Thole (thole@cs.rulimburg.nl)
>weten mij weer volledig down te maken (ik dacht dat ik na vier jaar een
>beetje kon vi-en...):

>Johan> " yank from current position to 'x'
>Johan> map K mb`a"ay`b`b

>Hans> Biedt dit voordelen boven het voor de hand liggende "ay`a ?

>Oei!

Nee, nee, nee.  Hij spelt zijn naam Oey, en bovendien is hij niet mij
en omgekeerd.

>Hier komen alweer twee dingen voor waar ik geen hout van snap!
>Nee, drie! Even de vraagjes structureren:

>- Wat doet zo'n backquote? (`)

Er zijn twee variaties:
1. Als je per ongeluk een commando intypt waardoor je heel ergens anders
   terecht komt, dan kun je `` intypen en dan ben je weer terug waar je was.
2. Je mag 26 plaatsen in je buffer markeren met een letter.  Dat doe je door
   een m in te typen; en dan die letter, bijvoorbeeld om de huidige positie
   x te noemen, type je mx .
   Om weer op die plaats terug te komen, type je `x .
   Als je 'x typt, kom je ergens vooraan de regel waar `x is.
   In ex mode is 'x wel bekend, maar `x niet.

>- Wat doet zo'n doublequote (")

Er zijn 26 buffers waarin je tekst kunt opslaan.  Dat doe je door een
dubbelquote in typen, dan de naam van de buffer, en dan een variant van het
y commando (of Y of, als je die tekst toch toevallig daar niet wou d of D,
of als je op die plaats liever iets anders wou, c of C of s of S of !).
Bijvoorbeeld "xy`z stopt de tekst tussen waar je bent en waar `z was,
in buffer x.  Als je de naam van de de buffer met een Hoofdletter spelt,
wordt de tekst achter de bestaande inhoud geplakt, dus b.v. "XY plakt de
huidige regel achterin buffer x.
Als je "xp typt, wordt de inhoud van buffer x achter of onder de cursor
geplaatst; als je "xP typt, ervoor of erboven (afhankelijk van de stand
van de maan).
Als je @x typt, wordt de inhoud van buffer x als vi mode commando's
geinterpreteeerd, als je :@x typt als ex mode commando's.

Een groot voordeel van deze 26 buffers boven degene die d en p normaal
gebruiken, is dat de inhoud niet verloren gaat als je met :n naar een
andere file gaat.  Dat levert een gerieflijke manier om stukjes tekst
van een file naar een andere te kopieren.

Als je een of meer hele regels gedeleted hebt, en je wilt ze even later
toch terug, dan kan dat met "1p .  Met "2p krijg je nog wat eerder
gedelete regels, met "3p nog oudere, en zo door tot "9p.  Omdat het zo
vermoeiend is om "1pu"2pu"3pu enz. in te typen als je op zoek bent naar
tekst die al ene tijdje weg is, mag je dat afkorten tot "1pu.u.u.u.u.
(dit is de enige situatie waarin . niet "hetzelfde nog een keer" doet).

>- map? Que? Is dat weer zo'n .exrc handigheidje?

Als je bijvoorbeeld

:map g 1G

intypt, dan is g voortaan een afkorting van 1G.
Het eerste argument van een :map mag langer zijn dan 1 letter, maar je moet
de combinatie wel binnen 1 seconde intypen, tenzij het eerste karakter van
de combinatie een # is.
Als je rare karakters, zoals <escape> en <return>, in je :map commando wilt
opnemen, moet je daar een control-V voor zetten (of soms twee, of drie).
Het :map commando wordt het meest toegepast in .exrc files.  Die worden
sowieso in ex mode geinterpreteerd en dan is de prefix : overbodig.
Desondanks zitten echte vi verslaafden toch de hele tijd :s in te typen
als ze bij uitzondering in ex mode zitten te werken.

>Even ter verdediging: ik werk pas vier jaar met vi en ik hoef dit 
>dus pas volgend jaar onder de knie te hebben.

Sorry, maar dat is niet waar: dit is derdejaars stof.  Alleen de ex mode
tegenhangers van deze commando's zitten in het vijde jaar.

>Groeten,

Groeten terug,

>Patrick

HansM
Newsgroups: nlnet.misc