# VI sisestusrežiim

VI sisestusrežiimi eesmärk ei ole täielik Vimi asendamine ja kõigi Vimi omaduste toetamine. See on mõeldud võimaldama Vimi moodi teksti redigeerimist - eeldusel, et Vimi tavad on selged, kuigi neid saab ka selle režiimi abil õppida - rakendustes, mis kasutavad &kappname; tekstiredaktorit enda sisemise redaktorina.

VI režiim sidestub kenasti eri programmidega ning lahkneb Vimi käitumisest ainult nii palju, kui sel om mõtet. Näiteks avab &kappname; VI režiimis ``w`` salvestamisdialoogi.

VI sisestusrežiimi lubamiseks kõigis uutes vaadetes vali Seadistused&kappname; seadistamine... Redigeerimine VI sisestusrežiim. Sellel kaardil saab määrata VI sisestusrežiimi valikud ning defineerida ja muuta režiimis kasutatavaid klahvikombinatsioone. VI sisestusrežiimi saab sisse või välja lülitada ka menüükäsuga VI sisestusrežiim, mille leiab menüüst Redigeerimine. (Vaikimisi kiirklahv on Meta&Ctrl;V - kus Meta on tavaliselt Windows-klahv.)

Erineval enamikust &kde; kiirklahvidest on paljud Vi režiimi kiirklahvid tõstutundlikud. See tähendab, et `y` ja `Y` on eri käsud. Käsu `y` (äratõmme ehk koopia) andmiseks kontrolli, et Caps Lock pole sees, ja vajuta Y. Käsu `Y` (äratõmme ehk koopia rea lõpuni) vajuta &Shift;Y.

See ei kehti käskude kohta, milles kasutatakse klahvi &Ctrl;, mida võib anda sõltumata Caps Lock olekust ja ilma klahvi &Shift; vajutamata. Mõned käsud aga nõuavad &Ctrl;-kombinatsiooni kasutamist, millele järgneb teine klahv, mille puhul on tähesuurus juba oluline. Näiteks &Ctrl;W, `h` (lülitumine parempoolsele poolitatud vaatele) tuleb kontrollida, et Caps Lock pole sees, vajutada &Ctrl;W, vabastada klahvid ja vajutada H.

### Erinevused Vimist

&kappname; VI režiimis on ainult mõned omadused, mis erinevad Vimist (see ei puuduta mõistagi üldse puuduvaid omadusi). Need on allpool ära toodud koos põhjendustega.

- &kappname;: `U` ja &Ctrl;R tähendavad uuesti tegemist.

  Vim: &Ctrl;R on tavaline uuesti tegemine, U võimaldab aga tühistada kõik viimased muudatused ühel real.

  Põhjus, miks U toimib &kappname; VI režiimis uuesti tegemisena, peitub selles, et &Ctrl;R on juba vaikimisi eraldatud &kappname; asendamisfunktsioonile (otsimine ja asendamine). Vaikimisi ei tühista VI režiim &kappname; kiirklahve (seda saab seadistada kaardil Seadistused&kappname; seadistamine... Redigeerimine Vi sisestusrežiim), mistõttu uuestitegemise toiming peab olema kättesaadav ka tavalise kiirklahvina. Lisaks ei ühti käsu `U` käitumine Vimis väga hästi &kappname; sisemise tagasivõtmissüsteemiga, mistõttu selle toetamine poleks kuigi hõlpus.

- &kappname;: ``print`` näitab trükkimisdialoogi.

  Vim: ``print`` näitab määratud vahemiku ridu, nagu tegi juba tema esiisa ed.

  Sellised käsud nagu ``:print`` on lisaks VI režiimile kasutatavad ka tavalise &kappname; kasutajatele, seepärast avabki käsk ``print`` trükkimisdialoogi, lähtudes põhimõttest, et Vimi käitumise matkimise asemel on oluline valmistada kasutajale võimalikult vähe ootamatuid üllatusi.

- &kappname;: Y teeb äratõmbe (koopia) rea lõpuni.

  Vim: `Y` teeb äratõmbe (koopia) tervest reast, nagu ka `y` `y`.

  VI käsu `Y` käitumine on tegelikult viga. Nii muutmis- kui ka kustutamiskäsu korral `c` `c`/ `d` `d` sooritavad toimingu aktiivsel real ning `C`/`D` kursoriveerust rea lõpuni. Ent samas nii `y` `y` kui ka `Y` teevad äratõmbe (koopia) tervest reast. &kappname; VI režiimis teeb `Y` äratõmbe (koopia) kuni rea lõpuni. Seda nimetatakse palju loogilisemaks ka Vimi dokumentatsioonis.

- &kappname;: `O` ja `o` avavad [`arvu`] uusi ridu ja viivad su lisamisrežiimi.

  Vim: `O` ja `o` avavad uue rea ja lisavad teksti [`arvu`] kordi lisamisrežiimist väljudes.

  Selle erinevuse põhjuseks on peamiselt teadaolevalt paljude inimeste segadus niisuguse käitumise üle, mida on olnud täheldada Vimi IRC-kanalil (#vim Freenode võrgus).

### Režiimide vahetamine

- Tavaline režiim võimaldab sisestada käske dokumendis liikumiseks või selle muutmiseks ning see on ka vaikimisi režiim. Sellesse saab teistest režiimidest naasta klahvile &Esc; vajutades.

- Visuaalne režiim võimaldab dokumendis teksti esile tõsta. Selles režiimis saab kasutada enamikku tavalise režiimi käske. Sellesse režiimi saab sisestada, kui vajutada `v` märkide valimiseks või `V` ridade valimiseks.

- Lisamisrežiim võimaldab dokumenti otseselt muuta. Sellesse saab siseneda kas vajutades `i` või mõne muu allpool ära toodud käsuga.

- Käsurežiim kutsub välja &kappname; käsurea, võimaldades kasutada nii paljusid Vi käske kui ka mõningaid &kappname; spetsiifilisi käske. Täpsemalt kõneleb neist käskudest advanced-editing-tools-commandline. Selle kasutamiseks vajuta :, sisesta käsk ja vajuta &Enter;.

### Lõimimine Kate võimalustega

- Visuaalsesse režiimi sisenetakse automaatselt teksti valimisel hiirega. Sinna sisenetakse ka siis, kui kasutatakse Kate funktsioone, mis valivad teksti, näiteks Vali kõik (kas menüüst või kiirklahviga &Ctrl;A ).

- Vi märgid ja Kate järjehoidjad on lõimitud. Kui Vi reziimis luuakse märgistus, luuakse ka vastav Kate järjehoidja, mis lisatakse menüüsse Järjehoidjad. Aga kui luuakse Kate järjehoidja, siis lisatakse vastav Vi märge veergu 0.

### Toetatud tavalise/visuaalse režiimi käsud

`a` | Sisenemine lisamisrežiimi; lisamine kursori järele
`A` | Sisenemine lisamisrežiimi; lisamine rea järele
`i` | Sisenemine lisamisrežiimi; lisamine kursori ette
`v` | Sisenemine visuaalsesse režiimi; märkide valimine
`V` | Sisenemine visuaalsesse režiimi; ridade valimine
`o` | Uue rea avamine aktiivse rea all
`O` | Uue rea avamine aktiivse rea kohal
`J` | Ridade ühendamine
`c` | Muutmine: liikumise järgimine kustutamiseks ja sisenemiseks lisamisrežiimi
`C` | Muutmine rea lõpuni: kustutamine rea lõpuni ja sisenemine lisamisrežiimi
`cc` | Rea muutmine: rea kustutamine ja sisenemine lisamisrežiimi
`s` | Märgi asendamine
`S` | Rea asendamine
`dd` | Rea kustutamine
`d` | Liikumise järgimine kustutamiseks
`D` | Kustutamine rea lõpuni
`x` | Märgi kustutamine kursorist paremal
`X` | Märgi kustutamine kursorist vasakul
`gu` | Liikumise järgimine väiketäheliseks muutmiseks
`g` | Aktiivse rea muutmine väiketäheliseks
`gU` | Liikumise järgimine suurtäheliseks muutmiseks
`g` | Aktiivse rea muutmine suurtäheliseks
`y` | Liikumise järgimine äratõmbe (koopia) tegemiseks
`yy` | Reast äratõmbe (koopia) tegemine
`Y` | Reast äratõmbe (koopia) tegemine
`p` | Asetamine kursori järele
`P` | Asetamine kursori ette
`r` | Järgimine märgiga märgi asendamiseks kursori järel
`:` | Sisenemine käsurežiimi
`/` | Otsing
`u` | Tagasivõtmine
&Ctrl;R | Uuestitegemine
`U` | Uuestitegemine
`m` | Märkimine (saab hiljem kasutada liikumiste juures)
`n` | Järgmise otsimine
`N` | Eelmise otsimine
`>>` | Rea treppimine
`<<` | Rea tagasitreppimine
`>` | Ridade treppimine
`<` | Ridade tagasitreppimine
&Ctrl;F | Lehekülg alla
&Ctrl;B | Lehekülg üles
`ga` | Märgi ASCII väärtuse näitamine
`.` | Viimase muudatuse kordamine
`==` | Rea joondamine
`=` | Ridade joondamine
`~` | Aktiivse märgi tähesuuruse muutmine
&Ctrl;S | Vaate poolitamine horisontaalselt
&Ctrl;V | Vaate poolitamine vertikaalselt
&Ctrl; W, `w` | Kerimine edasi järgmisele poolitatud aknale
&Ctrl; W, `h` &Ctrl; W Nool vasakule | Liikumine vasakpoolsele poolitatud aknale
&Ctrl; W, `l` &Ctrl; W Nool paremale | Liikumine parempoolsele poolitatud aknale
&Ctrl; W, `k` &Ctrl; W Nool üles | Liikumine ülemisele poolitatud aknale
&Ctrl; W, `j` &Ctrl; W Nool alla | Liikumine alumisele poolitatud aknale

### Toetatud liikumised

Neid käske saab kasutada dokumendis liikumiseks tavalises või visuaalses režiimis või koos mõnega ülal mainitud käskudest. Neile võib eelneda arvu määratlemine, mis näitab, mitu vastavat liikumist ette võtta.

`h` | Vasakule
Nool vasakule | Vasakule
&Backspace; | Vasakule
`j` | Alla
Nool alla | Alla
`k` | Üles
Nool üles | Üles
`l` | Paremale
Nool paremale | Paremale
Tühikuklahv | Paremale
`$` | Rea lõppu
End | Rea lõppu
`0` | Rea esimesele märgile (veerg 0)
Home | Rea esimesele märgile
`^` | Rea esimesele mittetühjale märgile
`f` | Märgi järgimine liigutamiseks kursorist paremale
`F` | Märgi järgimine liigutamiseks kursorist vasakule
`t` | Märgi järgimine liigutamiseks kursorist paremale, asetades kursori märgile enne seda
`T` | Märgi järgimine liigutamiseks kursorist vasakule, asetades kursori märgile enne seda
`gg` | Esimesele reale
`G` | Viimasele reale
`w` | Järgmisele sõnale
`W` | Järgmisele tühimärgiga eraldatud sõnale
`b` | Eelmisele sõnale
`B` | Eelmisele tühimärgiga eraldatud sõnale
`e` | Sõna lõppu
`E` | Tühimärgiga eraldatud sõna lõppu
`ge` | Eelmise sõna lõppu
`gE` | Eelmise tühimärgiga eraldatud sõna lõppu
`|` | Veerunumbri järgimine liikumiseks sellesse veergu
`%` | Elemendi järgimine liikumiseks sellesse elementi
``` | Märkimine
`‘` | Esimesele mittetühimärgist märgile real, mis on märgitud
`[[` | Eelmisele alustavale sulule
`]]` | Järgmisele alustavale sulule
`[]` | Eelmisele sulgevale sulule
`][` | Järgmisele sulgevale sulule
&Ctrl;I | Hüpe edasi järgmisse asukohta
&Ctrl;O | Hüpe tagasi eelmisse asukohta
`H` | Ekraani esimesele reale
`M` | Ekraani keskmisele reale
`L` | Ekraani viimasele reale
`%`protsent`` | Liikumine dokumendi määratud protsendile
`gk` | Visuaalselt üks rida üles (kui kasutatakse dünaamilist reamurdmist)
`gj` | Visuaalselt üks rida alla (kui kasutatakse dünaamilist reamurdmist)

### Toetatud tekstiobjektid

Neid saab kasutada dokumendi teatavate osade valimiseks.

`iw` | Sisesõna: sõna koos tühiruumiga
`aw` | Sõna: sõna ilma tühiruumita
`i"` | Eelmisest topeltjutumärgist (`"`) järgmise topeltjutumärgini, kaasa arvatud jutumärgid
`a”` | Eelmisest topeltjutumärgist (`"`) järgmise topeltjutumärgini, välja arvatud jutumärgid
`i'` | Eelmisest üksikjutumärgist (`'`) järgmise üksikjutumärgini, kaasa arvatud jutumärgid
`a'` | Eelmisest üksikjutumärgist (`'`) järgmise üksikjutumärgini, välja arvatud jutumärgid
`i(` | Eelmisest alustavast sulust [`(`] järgmise sulgeva suluni [`)`], kaasa arvatud sulud
`a(` | Eelmisest alustavast sulust [`(`] järgmise sulgeva suluni [`)`], välja arvatud sulud
`i[` | Eelmisest alustavast nurksulust (`[`) järgmise sulgeva nurksuluni (`]`), kaasa arvatud sulud
`a[` | Eelmisest alustavast nurksulust (`[`) järgmise sulgeva nurksuluni (`]`), välja arvatud sulud
`i{` | Eelmisest alustavast looksulust (`{`) järgmise sulgeva looksuluni (`}`), kaasa arvatud sulud
`a{` | Eelmisest alustavast looksulust (`{`) järgmise sulgeva looksuluni (`}`), välja arvatud sulud
`i<` | Eelmisest alustavast noolsulust (`<`) järgmise sulgeva noolsuluni (`>`), kaasa arvatud sulud
`a<` | Eelmisest alustavast noolsulust (`<`) järgmise sulgeva noolsuluni (`>`), välja arvatud sulud
`i`` | Eelmisest graavisest (```) järgmise graaviseni, kaasa arvatud graavised
`a`` | Eelmisest graavisest (```) järgmise graaviseni, välja arvatud graavised

### Toetatud lisamisrežiimi käsud

&Ctrl;D | Tagasitreppimine
&Ctrl;T | Treppimine
&Ctrl;E | Kursori all oleva märgi lisamine
&Ctrl;Y | Sõna kustutamine
&Ctrl;W | Sõna kustutamine
&Ctrl;Home | Liikumine dokumendi esimesele märgile
&Ctrl;R `n` | Registri `n` sisu lisamine
&Ctrl;O, `käsk` | Sisenemine tavalisse režiimi ainult ühe käsu jaoks
&Ctrl;A | Parajasti valitud arvu suurendamine
&Ctrl;X | Parajasti valitud arvu vähendamine

### Koma tekstiobjekt

See objekt Vimis puudub. Koma tekstiobjekt muudab hästi lihtsaks parameetriloendite muutmise C laadsetes keeltes ja ka teiste komadega eraldatud loendite muutmise. Põhimõtteliselt on tegemist alaga komade või koma ja sulu vahel. Joonisel näidatud real on punasega esile tõstetud kolm vahemikku, mida see tekstiobjekt saab hõlmata.

Koma tekstiobjekti näide Koma tekstiobjekti näide

Koma tekstiobjekti vahemikud. Kui kursor asub näiteks `arg2` kohal, siis `ci`, (change inner comma) vajutamine kustutab `double arg2` ja asetab kursori lisamisrežiimis kahe koma vahele. See on väga mugav viis muuta funktsiooni parameetreid.

### Puuduvad võimalused

Nagu varem mainitud, ei ole &kappname; VI režiimi eesmärk toetada 100% Vimi omadusi, küll on aga mõningaid asju, mille puudumine tekitab seni tõsist meelehärmi:

- Visuaalse ploki režiim - eriti võimalus lisada teksti visuaalse ploki valiku ette või taha.

- ex-käskude kasutamise võimalus teistes programmides peale &kappname;.

- Otsimiskood vajab täiustamist ning käsud `*` ja `#` peaksid olema lihtsalt tavalised otsingud.