Preskoči na vsebino

Način VI


Uvod

Vim Logo

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.

Če želite omogočiti način vnosa VI, pojdite na
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

  1. Urejevalnik besedil Kate
  2. KWrite – preprost urejevalnik besedil KDE
  3. KDevelop – napredno interaktivno razvojno okolje za številne programske jezike
  4. 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.

  1. Kate:* U in Ctrl+r je uveljavi
    Vim: Ctrl+r je normalni uveljavi, Use uporablja za razveljavitev vseh zadnjih sprememb v eni vrstici
    Razlog za uporabo U deluje kot ponavljanje v načinu Kate VI, je privzeta bližnjica ctrl+r bo 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.
  2. Kate: :print prikaže pogovorno okno "print"
    Vim: :print natisne 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 :print odpre tiskanje dialog – po načelu najmanjšega presenečenja namesto posnemanja Vimovega vedenja.
  3. Kate: Y potegne na konec vrstice.
    Vim: Y potegne celotno vrstico, samokot yy. Vedenje VI za ukaz Y je v praksi napaka; Za oba bo spreminjanje in brisanje ukazov, cc/dd opravil svoje dejanje v trenutni vrstici in C/D bosta delovala od stolpca, kjer je kazalka do konca vrstice. Vendar pa tako yy kot Y potegneta trenutno vrstico. V Kate načinu VI bo Y potegnila do konca vrstice. To je opisano kot "bolj logično" v Dokumentaciji Vim.
  4. Kate: :map spremeni izbrane vrstice dokumenta z uporabo podanega izraza JavaScript.
    Vim: :map doda podan izraz preslikave v običajni in vizualni način. Ukaz "map" je bil že rezerviran v Kate; v 4.12+ lahko uporabite kombinacijo :nmap in :vmap za zamenjavo.

Podprti ukazi

Podprti ukazi običajnega/vizualnega načina

TipkaOpis
aVstopi v način vstavljanja in dodaj
AVstopi v način vstavljanja in dodaj na konec vrstice
iVstopi v način vstavljanja
IVstavi pred prvi neprazen znak v vrstici
vVstopi v vizualni način
VVstopi v vizualni vrstični način
<c-v>Vstopi v vizualni bločni način
gvZnova izberi vizualni
oOdpri novo vrstico pod
OOdpri novo vrstico nad
JZdruži vrstici
cZamenjaj
CZamenjaj do konca vrstice
ccSpremeni vrstico
sNadomesti znak
SNadomesti vrstico
ddZbriši vrstico
dZbriši
DZbriši do konca vrstice
xZbriši znak
XZbriši znak nazaj
guNapravi malo črko
guuNapravi vrstico malih črk
gUNapravi veliko črko
gUUNapravi vrstico velikih črk
yPotegni
yyPotegni vrstico
YPotegni do konca vrstice
pPrilepi
PPrilepi pred
r.Zamenjaj znak
RVstopi v način zamenjave
:Preklopi na ukazno vrstico
/Išči
uPrekliči
<c-r>Uveljavi
UUveljavi
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
zzOsrednji pogled na kazalki
gaNatisni 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>hPreklopi na levi pogled
<c-w><c-h>Preklopi na levi pogled
<c-w><left>Preklopi na levi pogled
<c-w>jPreklopi na pogled spodaj
<c-w><c-j>Preklopi na pogled spodaj
<c-w><down>Preklopi na pogled spodaj
<c-w>kPreklopi na pogled zgoraj
<c-w><c-k>Preklopi na pogled zgoraj
<c-w><up>Preklopi na pogled zgoraj
<c-w>lPreklopi na desni pogled
<c-w><c-l>Preklopi na desni pogled
<c-w><right>Preklopi na desni pogled
<c-w>wPreklopi na naslednji pogled
<c-w><c-w>Preklopi na naslednji pogled
<c-w>sRazcepi vodoravno
<c-w>SRazcepi vodoravno
<c-w><c-s>Razcepi vodoravno
<c-w>vRazcepi navpično
<c-w><c-v>Razcepi navpično
gtPreklopi na naslednji zavihek
gTPreklopi na prejšnji zavihek
gqqOblikuj vrstico
gqOblikuj vrstice
q. / qZačni/končaj snemanje makra z uporabo imenovanega registra makra.

Podprta gibanja

TipkaOpis
hLevo
<levo>Levo
<backspace>Levo
jDol
<dol>Dol
<enter>Dol do prve neprazne
kGor
<gor>Gor
Gor do prve neprazne
lDesno
<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.
nNajdi naslednjega
NNajdi prejšnjega
ggNa prvo vrstico
GNa zadnjo vrstico
wZa besedo najprej
Wza BESEDo naprej
bBeseda nazaj
BBESEDA nazaj
eDo konca besede
EDo konca BESEDE
geDo konca prejšnje besede
gEDo 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
HNa prvo vrstico okna
MNa srednjo vrstico okna
LNa zadnjo vrstico okna
gjDo naslednje vizualne vrstice
gkDo prejšnje vizualne vrstice

Podprti besedilni predmeti

TipkaOpis
iwNotranja beseda
awBeseda
iWNotranja BESEDA
aWBESEDA
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
ibNotranji oklepaj
i)Notranji oklepaj
i(Notranji oklepaj
abOklepaj
a)Oklepaj
a(Oklepaj
iBNotranji zaviti oklepaj
o}Notranji zaviti oklepaj
i{Notranji zaviti oklepaj
aBZaviti 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

TipkaOpis
<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.

comma to

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.:

TipkaOpis
<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:
    Dodani Ctrl+A in Ctrl+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.