Hoofdstuk 9. De VI-invoermethode

Erlend Hamberg

Vertaler/Nalezer: Freek de Kruijf

VI-invoermethode

Het doel van de VI-modus is niet om een volledige vervanging voor Vim te zijn en alle functies van Vim te ondersteunen. Zijn doel is om het op Vim manier van tekstbewerken te doen - en de geleerde Vim-gewoonten - beschikbaar te maken voor programma's die de tekstbewerker KatePart als hun interne editor gebruiken.

Het doel van de VI-modus is te integreren netjes met het programma en wijkt af van het gedrag van Vim als dat zinvol is. Bijvoorbeeld :w zal een dialoog voor opslaan openen in de VI-modus van KatePart.

Om de VI-invoermodus voor alle nieuwe weergaven in te schakelen, gaat u naar InstellingenKatePart instellen...+BewerkenVI-invoermodus. Op dit tabblad kunt u opties instellen voor de VI-invoermodus en de toetsenmapping definiëren en bewerken in deze modus. VI-invoermodus kan ook omgeschakeld worden met de instelling VI-invoermodus in het menu Bewerken. (De standaard sneltoets is Meta+Ctrl+V - waar Meta gewoonlijk de toets Windows is).

Opmerking

Veel toetsenbordcommando's in vi-modus zijn, anders dan de meeste sneltoetsen van KDE, gevoelig voor hoofd- en kleine letters. Dit betekent dan y en Y verschillende commando's zijn. Om het y (yank) commando in te voeren, moet u controleren dat Caps Lock is uitgeschakeld en Y indrukken. Om het commando Y (yank tot het eind van de regel), voert u Shift+Y uit.

Dit is niet van toepassing op commando's die de toets Ctrl gebruiken, die mogen worden ingevoerd onafhankelijk van de modus van Caps Lock en zonder Shift in te drukken. Sommige commando's vereisen het gebruik van een Ctrl-toetscombinatie gevolgd door een andere toets die wel gevoelig is voor hoofd- en kleine letters. Om Ctrl+W, h (omschakelen naar het rechter gespleten beeld) in te voeren, controleert u of Caps Lock is uitgeschakeld, drukt u Ctrl+W in, laat u los en drukt dan H in.

Incompatibiliteiten met Vim

Er zijn slechts een paar functies van de VI-modus van KatePart die incompatibel zijn met Vim (dingen die ontbreken niet meegenomen). Zij worden hieronder getoond samen met de respectievelijke redenen.

  • KatePart: U en Ctrl+R is opnieuw doen.

    Vim: Ctrl+R is normaal opnieuw doen, U wordt gebruikt om alle laatste wijzigingen op één regel ongedaan te maken.

    De reden om U te laten reageren als opnieuw in de vi-modus van KatePart is dat de sneltoets Ctrl+R standaard in KatePart is ingenomen door de functie (zoeken en vervangen). De vi-modus zal standaard de sneltoetsen van KatePart niet overschrijven (dit kan ingesteld worden in InstellingenKatePart instellen...+BewerkenVi-invoermodus), daarom moet een opnieuw-actie ook beschikbaar zijn als een reguliere toets. Het gedrag van het U commando in Vim, dit terzijde, gaat niet goed samen met het interne opnieuw-systeem van KatePart, het is dus niet triviaal om het te ondersteunen.

  • KatePart: print toont de dialoog Afdrukken.

    Vim: print drukt de regels in de gegeven reeks af zoals zijn voorouder ed.

    Commando's zoals :print zijn niet alleen beschikbaar in vi-modus maar ook voor gebruikers van het reguliere KatePart - daarom opent het commando :print de printdialoog - volgens het principe van het minst verrassend, in plaats van het gedrag van Vim nadoen.

  • KatePart: Y yanks tot het einde van de regel.

    Vim: Y yanks de gehele regel, net als yy.

    Het gedrag van vi op het commando Y is in de praktijk een bug. De beide commando's wijzigen en verwijderen, cc / dd doen hun actie op de huidige regel en C/D werken van de cursor tot het regeleinde. Echter, zowel yy en Y 'yanks' (kopiëren de huidige regel. In de vi-modus van KatePart kopieert Y tot het einde van de regel. Dit wordt als logischer beschreven in de documentatie van Vim.

  • KatePart: O en o opent [aantal] nieuwe regels en plaatst u in invoegmodus.

    Vim: O en o opent een nieuwe regel en voegt een [aantal] keren tekst in bij het verlaten van de invoegmodus.

    Dit is hoofdzakelijk gedaan als gevolg van het zien van velen die in verwarring zijn door dit gedrag van een vim IRC-kanaal (#vim op Libera Chat).

Modi omschakelen

  • Normale modus stelt u in staat om commando's in te voeren om te navigeren of een document te bewerken en is de standaard modus. U kunt er naar terug keren vanuit elke andere modus door Esc in te drukken.

  • Visuele modus stelt u in staat tekst in een document te accentueren. De meeste commando's in Normale modus zijn ook geldig in deze modus. U kunt ze invoeren door v in te drukken om tekens te selecteren of V om regels te selecteren.

  • Invoegmodus stelt u in staat om het document direct te bewerken. U kunt in deze modus komen door i in te drukken of één van de verschillende andere onderstaande commando's.

  • Commandomodus roept de commandoregel van KatePart op, waarmee u vele commando's kunt uitvoeren die beschikbaar zijn in Vi-implementaties evenals sommige specifiek voor KatePart. Voor meer informatie over deze commando's, zie de paragraaf met de naam “De commandoregel in de editor”. Om ze te gebruiken, druk op :, voer het commando in en druk op Enter.

Integratie met wat Kate kan

  • Visuele modus wordt automatisch ingegaan wanneer er tekst wordt geselecteerd met de muis. Deze modus wordt ook ingegaan wanneer functies van Kate worden gebruikt die tekst selecteren, zoals 'Alles selecteren' (ofwel uit het menu of via Ctrl+A).

  • Vi markeringen en Bladwijzers van Kate zijn geïntegreerd. Wanneer een markering aangemaakt is in Vi-modus, dan wordt er een overeenkomstige bladwijzer in Kate aangemaakt en verschijnt het in het menu Bladwijzers. Wanneer er een bladwijzer in Kate wordt aangemaakt, dan zal er een overeenkomstige Vi-markering op de 0-kolom worden aangemaakt.

Ondersteunde commando's in normale/visuele modus

a

Ga naar invoermodus; na de cursor invoegen

A

Ga naar invoermodus; na de regel invoegen

i

Ga naar invoermodus; voor de cursor invoegen

Ins

Ga naar invoermodus; voor de cursor invoegen

I

Ga naar invoermodus; voor de eerste niet-blanco teken op de regel invoegen

gi

Ga naar invoermodus; voor de plek invoegen waar de laatste invoermodus werd verlaten

v

Ga naar zichtmodus; selecteer tekens

V

Ga naar zichtmodus; selecteer regels

Ctrl+v

Ga naar zichtmodus; selecteer blokken

gb

Ga naar zichtmodus; selecteer opnieuw de laatste selectie

o

Open een nieuwe regel onder de huidige regel

O

Open een nieuwe regel boven de huidige regel

J

Regels samenvoegen

c

Wijziging: gevolgd door een beweging om te verwijderen en in invoegmodus te gaan

C

Wijzig tot het eind van de regel: verwijder tot het eind van de regel en ga naar invoermodus

cc

Wijzig de regel: verwijder de regel en ga naar invoermodus

s

Teken vervangen

S

Regel vervangen

dd

Regel verwijderen

d

Gevolgd door een beweging om te verwijderen

D

Tot het einde van de regel verwijderen

x

Verwijder teken rechts van de cursor

Del

Verwijder teken rechts van de cursor

X

Verwijder teken links van de cursor

gu

Gevolgd door een beweging om een kleine letter te maken

guu

Maak de huidige regel geheel kleine letters

gU

Gevolgd door een beweging om hoofdletter te maken

gUU

Maak de huidige regel geheel hoofdletters

y

Gevolgd door een beweging voor yank (kopiëren)

yy

Yank (kopieer) regel

Y

Yank (kopieer) regel

p

Na cursor plakken

P

Voor cursor plakken

]p

Na de cursor ingesprongen plakken

[p

Voor de cursor ingesprongen plakken

r

Gevolg door een teken dat het teken na de cursor vervangt

R

In vervang-modus gaan

:

In commando-modus gaan

/

Zoeken

u

Ongedaan maken

Ctrl+R

Opnieuw

U

Opnieuw

m

Stel een markering in (kan later worden gebruikt door verplaatsingen)

n

Volgende zoeken

N

Vorige zoeken

>>

Regel in laten springen

<<

Inspringen in regel verwijderen

>

Regels in laten springen

<

Inspringen in regels verwijderen

Ctrl+F

Pagina omlaag

Ctrl+B

Pagina omhoog

ga

Toon de ASCII-waarde van het teken

.

Laatste wijziging herhalen

==

commandoRegelUitlijnen

=

commandoRegelsUitlijnen

~

Keer de hoofd-/kleine letter om

Ctrl+S

Splits het beeld horizontaal

Ctrl+V

Beeld verticaal splitsen

Ctrl+W, w

Ga rond naar het volgende gespleten venster

Ctrl+W, h

Ctrl+W Left

Ga naar het linker gespleten venster

Ctrl+W, l

Ctrl+W Right

Ga naar het rechter gespleten venster

Ctrl+W, k

Ctrl+W Up

Ga naar het bovenste gespleten venster

Ctrl+W, j

Ctrl+W Down

Ga naar het onderste gespleten venster

Ondersteunde verplaatsingen

Deze kunnen gebruikt worden om in een document rond te gaan in normale of visuele modus of in samenhang met een van de boven genoemde commando's. Ze kunnen vooraf gaan met een aantal, die aangeven hoe vaak de van toepassing zijnde verplaatsingen gemaakt moeten worden.

h

Links

Left

Links

Backspace

Links

j

Omlaag

Down

Omlaag

k

Up

Up

Up

l

Rechts

Right

Rechts

Space

Rechts

$

Einde van regel

End

Einde van regel

0

Eerste teken van de regel (kolom 0)

Home

Eerste teken van de regel

^

Eerste niet-witruimte-teken van de regel

f

Gevolgd door het teken om naar rechts van de cursor te gaan

F

Gevolgd door het teken om naar links van de cursor te gaan

t

Gevolgd door het teken om naar rechts van de cursor te gaan en de cursor op het teken ervoor te plaatsen

T

Gevolgd door het teken om naar links van de cursor te gaan en de cursor op het teken ervoor te plaatsen

gg

Eerste regel

G

Laatste regel

w

Volgende woord

W

Volgende woord gescheiden door witruimte

b

Vorige woord

B

Vorige woord gescheiden door witruimte

e

Einde van woord

E

Einde van woord gescheiden door witruimte

ge

Einde van vorige woord

gE

Einde van vorige woord gescheiden door witruimte

|

Gevolgd door een kolomnummer om naar die kolom te gaan

%

Gevolgd door een item om naar dat item te gaan

`

Markeren

Eerste niet-witruimte-teken van de regel waarop een markering zit

[[

Vorig recht openingshaakje

]]

Volgend recht openingshaakje

[]

Vorig recht sluithaakje

][

Volgend recht sluithaakje

Ctrl+I

Naar de volgende locatie springen

Ctrl+O

Naar de vorige locatie springen

H

Ga naar de eerste regel op het scherm

M

Ga naar de middelste regel op het scherm

L

Ga naar de laatste regel op het scherm

%percentage

Ga naar het gespecificeerde percentage in het document

gk

Ga één zichtbare regel omhoog (bij gebruik van dynamische regelafbreking)

gj

Ga één zichtbare regel omlaag (bij gebruik van dynamische regelafbreking)

Ctrl+Left

Eén woord naar links

Ctrl+Right

Eén woord naar rechts

Ondersteunde tekstobjecten

Deze kunnen gebruikt worden om een bepaald gedeelte van een document te selecteren.

iw

Inwendig woord: woord inclusief witruimte

aw

Een woord: woord exclusief witruimte

i"

Vorig aanhalingsteken (") tot volgend aanhalingsteken, inclusief de aanhalingstekens

a”

Vorig aanhalingsteken (") tot volgend aanhalingsteken, exclusief de aanhalingstekens

i'

Vorig accent (') tot volgend accent, inclusief de accenten

a'

Vorig accent (') tot volgend accent, exclusief de accenten

i(

Vorig rond openingshaakje[(] tot volgend rond sluithaakje [)], inclusief de haakjes

a(

Vorig rond openingshaakje [(] tot volgend rond sluithaakje [)], exclusief de haakjes

i[

Vorig recht openingshaakje ([) tot volgend recht sluithaakje (]), inclusief de haakjes

a[

Vorig recht openingshaakje ([) tot volgend recht sluithaakje (]), exclusief de haakjes

i{

Vorige startaccolade ({) tot volgende sluitaccolade (}), inclusief de accolades

a{

Vorige startaccolade ({) tot volgende sluitaccolade (}, exclusief de accolades

i<

Vorig kleiner-dan-teken (<) tot volgend groter-dan-teken (>), inclusief deze tekens

a<

Vorig kleiner-dan-teken (<) tot volgend groter-dan-teken (>), exclusief de haakjes

i`

Vorig accent-achterover (`) tot volgend accent-achterover, inclusief deze tekens

a`

Vorig accent-achterover (`) tot volgend accent-achterover, exclusief deze tekens

Ondersteunde commando's in invoegmodus

Ctrl+D

Inspringen verwijderen

Ctrl+T

Inspringen

Ctrl+E

Van onderaf invoegen

Ctrl+Y

Woord verwijderen

Ctrl+W

Woord verwijderen

Ctrl+U

Regel verwijderen

Ctrl+J

Nieuwe regel

Ctrl+H

Teken achterwaarts verwijderen

Ctrl+Home

Ga naar het eerste teken in het document

Ctrl+R n

De inhoud van register n invoegen

Ctrl+O, commando

Normale modus voor één commando ingaan

Ctrl+A

Nu geselecteerd getal met één verhogen

Ctrl+X

Nu geselecteerd getal met één verlagen

Het kommatekstobject

Dit object ontbreekt in Vim. Het kommatekstobject maakt het gemakkelijk om parameterlijsten in C-achtige talen en andere kommagescheidenlijsten. Het is in de basis het gebied tussen twee komma's of tussen een komma en een haakje. In de in de illustratie getoonde regel lichten de drie bereiken, die deze tekstobjecten kunnen overspannen, op.

Een voorbeeld van een kommatekstobject

Reeksen van kommatekstobjecten. Als de cursor boven bijv. arg2 is en u drukt op ci, (inwendige komma wijzigen) dan zou double arg2 worden verwijderd en komt de cursor tussen de twee komma's in invoegmodus te staan. Een erg gemakkelijke manier om functieparameters te wijzigen.

Ontbrekende functies

Zoals eerder aangegeven, is het doel van de VI-modus van KatePart niet om 100% van de functies van Vim te ondersteunen.