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:*
U
inCtrl+r
je uveljavi
Vim:Ctrl+r
je normalni uveljavi,U
se uporablja za razveljavitev vseh zadnjih sprememb v eni vrstici
Razlog za uporaboU
deluje kot ponavljanje v načinu Kate VI, je privzeta bližnjicactrl+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. - 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. - Kate:
Y
potegne na konec vrstice.
Vim:Y
potegne celotno vrstico, samokotyy
. Vedenje VI za ukazY
je v praksi napaka; Za oba bo spreminjanje in brisanje ukazov,cc
/dd
opravil svoje dejanje v trenutni vrstici inC
/D
bosta delovala od stolpca, kjer je kazalka do konca vrstice. Vendar pa takoyy
kotY
potegneta trenutno vrstico. V Kate načinu VI boY
potegnila do konca vrstice. To je opisano kot "bolj logično" v Dokumentaciji Vim. - 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
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+A
inCtrl+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.