&Erlend.Hamberg; &Erlend.Hamberg.mail;
&Freek.de.Kruijf;

# De VI-invoermethode

## 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 &kappname; 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 &kappname;.

Om de VI-invoermodus voor alle nieuwe weergaven in te schakelen, gaat u naar Instellingen&kappname; instellen... Bewerken VI-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).

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 &kappname; die incompatibel zijn met Vim (dingen die ontbreken niet meegenomen). Zij worden hieronder getoond samen met de respectievelijke redenen.

- &kappname;: `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 &kappname; is dat de sneltoets &Ctrl;R standaard in &kappname; is ingenomen door de functie (zoeken en vervangen). De vi-modus zal standaard de sneltoetsen van &kappname; niet overschrijven (dit kan ingesteld worden in Instellingen&kappname; instellen... Bewerken Vi-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 &kappname;, het is dus niet triviaal om het te ondersteunen.

- &kappname;: ``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 &kappname; - daarom opent het commando ``:print`` de printdialoog - volgens het principe van het minst verrassend, in plaats van het gedrag van Vim nadoen.

- &kappname;: `Y` yanks tot het einde van de regel.

  Vim: `Y` yanks de gehele regel, net als `y` `y`.

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

- &kappname;: `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 &kappname; op, waarmee u vele commando's kunt uitvoeren die beschikbaar zijn in Vi-implementaties evenals sommige specifiek voor &kappname;. Voor meer informatie over deze commando's, zie . 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
Een voorbeeld van een kommatekstobject

Reeksen van kommatekstobjecten. Als de cursor boven &eg; 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 &kappname; niet om 100% van de functies van Vim te ondersteunen.