Način VI
Uvod

Kate način VI je projekt, ki prinaša modalno urejanje, podobno Vimu, v Urejevalnik besedil Kate in z razširitvijo na druge programe KDE, ki imajo enak urejevalnik. Projekt se je začel kot projekt Google Summer of Code leta 2008 – kjer so zapisane vse osnovne funkcionalnosti. Nadaljeval sem vzdrževati in nadalje razvijati to kodo in število manjkajočih zmožnosti iz Vima se počasi zmanjšuje. Večina uporabnikov Vima bo že produktivna v Kate načinu VI. Seznam manjkajočega je na dnu strani.
Ta stran je namenjena posodobljenemu pregledu tega dela.
Nastavitve → Konfiguriraj Kate… → Urejanje → Vnosni način VI.
Lahko ga tudi preklapljate z nastavitvijo "VI Input Mode" v menuju "Edit". (Privzeta bližnjična tipka je Meta+Ctrl+V – kjer je običajno Meta tipka Windows).
Cilji
Cilj načina VI ni biti popolna zamenjava za Vim in podpira vse Vimove zmožnosti. Njegov cilj je ustvariti "Vimov način" urejanja besedila – in pridobljene navade Vim – na voljo za programe, ki uporabljajo urejevalnik besedil Kate kot njihov notranji urejevalnik. Ti programi vključujejo
- Urejevalnik besedil Kate
- KWrite – preprost urejevalnik besedil KDE
- KDevelop – napredno interaktivno razvojno okolje za številne programske jezike
- Kile – urejevalnik LaTeX
Način VI se lepo integrira s programi in odstopa od Vimovega vedenja, kjer je smiselno. Na primer, :w bo odprl pogovorno okno za shranjevanje v načinu Kate VI.
Nezdružljivosti z Vim
Obstaja le nekaj zmožnosti Kate načina VI, ki niso združljive z Vimom (brez štetja manjkajočih stvari). Spodaj so navedeni skupaj z ustreznimi razlogi.
- Kate:*
UinCtrl+rje uveljavi
Vim:Ctrl+rje normalni uveljavi,Use uporablja za razveljavitev vseh zadnjih sprememb v eni vrstici
Razlog za uporaboUdeluje kot ponavljanje v načinu Kate VI, je privzeta bližnjicactrl+rbo prevzela Kate zamenjavna funkcija (iskanje in zamenjava). Privzeto VI način ne bo preglasil Kate bližnjic (to je mogoče konfigurirati v nastavitvah → Konfiguriraj Kate… → Urejanje → Način vnosa Vi), zato je potrebno ponoviti dejanje na voljo tudi kot "običajen" pritisk na tipko. Poleg tega se vedenje ukaza U v Vimu ne preslika dobro v Katein notranji sistem za razveljavitev, zato bi vseeno biti nepomembna za podporo. - Kate:
:printprikaže pogovorno okno "print"
Vim::printnatisne vrstice danega obsega kot njegov dedek ed Ukazi, kot je :print so na voljo ne samo v načinu VI, ampak tudi za uporabnike, ki uporabljajo "običajni" Kate, tudi – zato sem se odločil, da ukaz:printodpre tiskanje dialog – po načelu najmanjšega presenečenja namesto posnemanja Vimovega vedenja. - Kate:
Ypotegne na konec vrstice.
Vim:Ypotegne celotno vrstico, samokotyy. Vedenje VI za ukazYje v praksi napaka; Za oba bo spreminjanje in brisanje ukazov,cc/ddopravil svoje dejanje v trenutni vrstici inC/Dbosta delovala od stolpca, kjer je kazalka do konca vrstice. Vendar pa takoyykotYpotegneta trenutno vrstico. V Kate načinu VI boYpotegnila do konca vrstice. To je opisano kot "bolj logično" v Dokumentaciji Vim. - Kate:
:mapspremeni izbrane vrstice dokumenta z uporabo podanega izraza JavaScript.
Vim::mapdoda podan izraz preslikave v običajni in vizualni način. Ukaz "map" je bil že rezerviran v Kate; v 4.12+ lahko uporabite kombinacijo:nmapin:vmapza zamenjavo.
Podprti ukazi
Podprti ukazi običajnega/vizualnega načina
| Tipka | Opis |
|---|---|
| a | Vstopi v način vstavljanja in dodaj |
| A | Vstopi v način vstavljanja in dodaj na konec vrstice |
| i | Vstopi v način vstavljanja |
| I | Vstavi pred prvi neprazen znak v vrstici |
| v | Vstopi v vizualni način |
| V | Vstopi v vizualni vrstični način |
| <c-v> | Vstopi v vizualni bločni način |
| gv | Znova izberi vizualni |
| o | Odpri novo vrstico pod |
| O | Odpri novo vrstico nad |
| J | Združi vrstici |
| c | Zamenjaj |
| C | Zamenjaj do konca vrstice |
| cc | Spremeni vrstico |
| s | Nadomesti znak |
| S | Nadomesti vrstico |
| dd | Zbriši vrstico |
| d | Zbriši |
| D | Zbriši do konca vrstice |
| x | Zbriši znak |
| X | Zbriši znak nazaj |
| gu | Napravi malo črko |
| guu | Napravi vrstico malih črk |
| gU | Napravi veliko črko |
| gUU | Napravi vrstico velikih črk |
| y | Potegni |
| yy | Potegni vrstico |
| Y | Potegni do konca vrstice |
| p | Prilepi |
| P | Prilepi pred |
| r. | Zamenjaj znak |
| R | Vstopi v način zamenjave |
| : | Preklopi na ukazno vrstico |
| / | Išči |
| u | Prekliči |
| <c-r> | Uveljavi |
| U | Uveljavi |
| m. | Nastavi oznako |
| >> | Zamakni vrstico |
| << | Odzamakni vrstico |
| > | Zamakni vrstice |
| < | Ozamakni vrstice |
| <c-f> | Pomakni za stran navzdol |
| <pagedown> | Pomakni za stran navzdol |
| <c-b> | Pomakni za stran navzgor |
| <pageup> | Pomakni za stran navzgor |
| <c-u> | Pomakni za pol strani navzgor |
| <c-d> | Pomakni za pol strani navzdol |
| zz | Osrednji pogled na kazalki |
| ga | Natisni kodo znaka |
| . | Ponovi zadnjo zamenjavo |
| == | Poravnaj vrstico |
| = | Poravnaj vrstice |
| ~ | Spremeni malo/veliko ali obratno |
| <c-a> | Dodaj k številu |
| <c-x> | Odštej od števila |
| <c-o> | Pojdi na prejšnji skok |
| <c-i> | Pojdi na naslednji skok |
| <c-w>h | Preklopi na levi pogled |
| <c-w><c-h> | Preklopi na levi pogled |
| <c-w><left> | Preklopi na levi pogled |
| <c-w>j | Preklopi na pogled spodaj |
| <c-w><c-j> | Preklopi na pogled spodaj |
| <c-w><down> | Preklopi na pogled spodaj |
| <c-w>k | Preklopi na pogled zgoraj |
| <c-w><c-k> | Preklopi na pogled zgoraj |
| <c-w><up> | Preklopi na pogled zgoraj |
| <c-w>l | Preklopi na desni pogled |
| <c-w><c-l> | Preklopi na desni pogled |
| <c-w><right> | Preklopi na desni pogled |
| <c-w>w | Preklopi na naslednji pogled |
| <c-w><c-w> | Preklopi na naslednji pogled |
| <c-w>s | Razcepi vodoravno |
| <c-w>S | Razcepi vodoravno |
| <c-w><c-s> | Razcepi vodoravno |
| <c-w>v | Razcepi navpično |
| <c-w><c-v> | Razcepi navpično |
| gt | Preklopi na naslednji zavihek |
| gT | Preklopi na prejšnji zavihek |
| gqq | Oblikuj vrstico |
| gq | Oblikuj vrstice |
| q. / q | Začni/končaj snemanje makra z uporabo imenovanega registra makra. |
Podprta gibanja
| Tipka | Opis |
|---|---|
| h | Levo |
| <levo> | Levo |
| <backspace> | Levo |
| j | Dol |
| <dol> | Dol |
| <enter> | Dol do prve neprazne |
| k | Gor |
| <gor> | Gor |
| – | Gor do prve neprazne |
| l | Desno |
| <desno> | Desno |
| <preslednica> | Desno |
| $ | Do konca vrstice |
| <end> | Do konca vrstice |
| Na 0-ti stolpec | |
| <home> | Na 0-ti stolpec |
| ^ | Na prvi znak vrstice |
| f. | Najdi znak |
| F. | Najdi znak nazaj |
| t. | Do znaka |
| T. | Do znaka nazaj |
| ; | Ponovi zadnji ukaz t. ali f. |
| , | Ponovi zadnji ukaz t. ali f. |
| n | Najdi naslednjega |
| N | Najdi prejšnjega |
| gg | Na prvo vrstico |
| G | Na zadnjo vrstico |
| w | Za besedo najprej |
| W | za BESEDo naprej |
| b | Beseda nazaj |
| B | BESEDA nazaj |
| e | Do konca besede |
| E | Do konca BESEDE |
| ge | Do konca prejšnje besede |
| gE | Do konca prejšnje BESEDE |
| % | Do ujemajoče se postavke |
| `[a-zA-Z><] | Do zaznamka |
| '[a-zA-Z><] | Označi vrstico |
| [[ | Na prejšnji oklepaj začetka bloka |
| ]] | Na naslednji oklepaj začetka bloka |
| [] | Na prejšnji zaklepaj konca bloka |
| ][ | Na naslednji zaklepaj konca bloka |
| * | Na naslednji pojav besede pod kazalcem |
| # | Na prejšnji pojav besede pod kazalcem |
| H | Na prvo vrstico okna |
| M | Na srednjo vrstico okna |
| L | Na zadnjo vrstico okna |
| gj | Do naslednje vizualne vrstice |
| gk | Do prejšnje vizualne vrstice |
Podprti besedilni predmeti
| Tipka | Opis |
|---|---|
| iw | Notranja beseda |
| aw | Beseda |
| iW | Notranja BESEDA |
| aW | BESEDA |
| i" | Notranji dvojni narekovaj |
| a" | Dvojni narekovaj |
| i’ | Notranji enojni narekovaj |
| a’ | Enojni narekovaj |
| i` | Notranji narekovaj s poševnico nazaj |
| a` | Narekovaj s poševnico nazaj |
| ib | Notranji oklepaj |
| i) | Notranji oklepaj |
| i( | Notranji oklepaj |
| ab | Oklepaj |
| a) | Oklepaj |
| a( | Oklepaj |
| iB | Notranji zaviti oklepaj |
| o} | Notranji zaviti oklepaj |
| i{ | Notranji zaviti oklepaj |
| aB | Zaviti oklepaj |
| a} | Zaviti oklepaj |
| a{ | Zaviti oklepaj |
| i< | Notranji znak enakosti |
| i> | Notranji znak enakosti |
| a< | Znak neenakosti |
| a> | Znak neenakosti |
| i[ | Notranji oklepaj |
| I] | Notranji oklepaj |
| a[ | Oklepaj |
| a] | Oklepaj |
| i, | Notranja vejica |
| a, | Vejica |
Podprti ukazi načina vstavljanja
| Tipka | Opis |
|---|---|
| <c-d> | Odzamakni |
| <c-t> | Zamakni |
| <c-e> | Vstavi od spodaj |
| <c-y> | Vstavi od zgoraj |
| <c-w> | Zbriši besedo |
| <c-r>. | Vstavi vsebino registra |
| <c-o> | Preklopi v normalni način za en ukaz |
| <c-a> | Povečaj število pod kazalko |
| <c-x> | Zmanjšaj število pod kazalko |
Besedilni predmet Vejica
To je nekaj, kar sem pogrešal v Vimu. Besedilni predmet vejica omogoča preprosto spreminjanje seznamov parametrov v jezikih podobnih C-ju in drugih seznamih ločenih z vejicami. V bistvu je območje med dvema vejicama ali med vejico in oklepajem. V vrstici, prikazani na sliki na desni, so trije obsegi, ki jih ta besedilni predmet lahko zajema, in so označeni z rdečo.

Območja besedilnih predmetov vejice. Če je kazalec čez, recimo "arg2" in pritisnete c i,(»spremeni notranjo vejico«) bi izbrisal »dvojni arg2« in postavil kazalecmed obema vejicama v načinu vstavljanja. Zelo priročen način za spremembo parametrov funkcije.
Emulirana ukazna vrstica Vim
Kate 4.11 je uvedel skrito možnost konfiguracije, zaradi katere /, ? in : prinašajo nove ukaze iskanja namesto običajnega ukazne vrstice Kate Najdi / Zamenjaj. Vrstica je namenjena posnemanju številnih značilnosti Vimove ukazne vrstice in tudi za odpravo številnih težav z načini interakcije Kate Vim z vrstico Kate Najdi/Zamenjaj (interaktivna zamenjava ne deluje; inkrementalno iskanje ne postavi kazalca pravilno; ni uporabno vpreslikavah/makrih; itd).
Emulirana ukazna vrstica ponuja naslednje bližnjice; kot z Vim, je te mogoče preslikati s cmap, cnoremap itd.:
| Tipka | Opis |
|---|---|
| <c-r>. | vstavi vsebino registra. |
| <c-r><c-w> | Vstavi besedo pod kazalec (dokumenta). |
| <c-p> | Prikliči kontekstno specifično dokončanje (glejte spodaj) premakni se nazaj/navzgor po seznamu dokončanj. |
| <c-p> | Premakni se naprej/dol po seznamu dokončanj. |
| <c-space> | Razširitev Kate Vim. Samodokončanje besede iz dokumenta. |
| <c-d> | Razširitev Kate Vim. V izrazu zamenjave sed (tj. s/find/replace/[g][c][i]), počisti izraz "najdi" in postavi kazalec tja. |
| <c-f> | Razširitev Kate Vim. V izrazu zamenjave sed (tj. s/find/replace/[g][c][i]), počisti izraz "zamenjaj" in postavi kazalec tja. |
| <c-g>. | Vim razširitev Kate. Kot pri ., vstavi vsebino imenovanega registra, vendar mu ubeži tako, da pri uporabi z iskanjem, iščemo dobesedno vsebino registra; ne vsebino registra raztolmačeno kot regularni izraz. |
"Dokončanje glede na kontekst" je določeno na naslednji način:
- V iskalni vrstici (
/ali?) samodejno dokončanje iz zgodovine iskanja (karvključuje iskanja, ki se sprožijo prek iskanj*; in#; iskanj izvedenih v izrazih sed-replace; itd.) - V prazni ukazni vrstici (
:) samodejno dokončanje iz zgodovine ukazov (OPOMBA: samodejno dokončanje imen ukazov se sproži samodejno, ko začnete tipkati). - V ukazni vrstici, ki vsebuje izraz sed-replace (npr.
:s/find/replace/gc), če je kazalka postavljena nad "najdi", samodejno dokončanje iz zgodovine "iskanj"; če je nad "zamenjaj", samodejno dokončanje iz zgodovine izrazov "zamenjaj".
Pri izvajanju izraza sed-replace v ukazni vrstici z zastavico "c" (npr. s/find/replace/gc), se bo začel izraz interaktivnega iskanja/zamenjave v slogu Vim.
Nekaj primerov uporabe emulirane ukazne vrstice z animacijami GIF je v tem blogu. V 4.11 lahko emulirano ukazno vrstico omogočite z nastavitvijo skrite možnosti konfiguracije "Ukazna vrstica ukaza vhodnega načina Vi" na true v vaši datoteki katerc/kwriterc/kdeveloprc.
Manjkajoče zmožnosti
Kot smo že omenili, cilj VI načina v Kate ni podpirati 100% VImovih zmožnosti obstajajo pa nekatere funkcije, ki jih zelo pogrešamo
- Način vizualnega bloka – še posebej možnost dodajanja pred/dodajanja za blok besedila kizboru vizualnega bloka.
- Imeti prejšnje ukaze na voljo v drugih programih, razen v aplikaciji Kate.
- Iskalno kodo je treba še izboljšati in ukaza * in # bi morala biti regularna iskanja.
Če pogrešate druge funkcije ali želite pomagati pri zgoraj omenjenih, me lahko prosto kontaktirate ali pošljete popravke! :-)
Zamenjaj dnevnik
- 16.05.2010:
Začetna različica. Zbrane informacije iz bloga vnosov in datoteke README, da bi ustvaril en sam vir trenutnih informacij. - 17.05.2010:
DodaniCtrl+AinCtrl+X(povečaj/pomanjšaj številko pod kazalko). - 30.08.2010:
Prenesena stran v kate-editor.org. - 10.09.2010:
Popravili besedilo na predmetu besedila z vejico in naredili nekaj popravkov oblikovanja - 203.02.2021:
Pretvorjene tabele za vezavo tipk v markdown za hugo.